使用 matplotlib 在 2 y 轴上使用散点图

Gla*_*rse 2 python matplotlib data-analysis

我试图在 matplotlib 上绘制 2 条不同的曲线,但其中一个图需要散点图,或者没有连接点的线。有没有办法做到这一点?现在,我的绘图代码是:

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()
ax1.plot(epoch, list_of_gas, 'b')
ax2.plot(temp_times, temperatures, 'r')

ax1.set_ylabel('Pressure (torr)', color='b')
ax2.set_ylabel('Temperature (Celcius)', color='r')

ax1.set_title(folder + ' - ' + gas)
ax1.set_xlabel('time (seconds)')
ax1.set_xlim([0, 1000000])
ax2.set_ylim([0,425])
ax1.set_yscale('log')
ax1.set_ylim([ymin,ymax])

plt.show()
Run Code Online (Sandbox Code Playgroud)

但是,我想要ax1.scatter(epoch, list_of_gas, 'b'),但是您不能使用 2 轴散点图。有谁知道解决这个问题的方法?喜欢删除连接点的线?

Oli*_* W. 6

您绝对可以在 twinx(双轴,共享 x 轴)情况下绘制散点图:

import numpy as np
import matplotlib.pyplot as plt

x, y = np.random.random((2,50))
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.scatter(x, y, c='b')
ax2.plot(np.sort(x), np.arange(x.size), c='r')
Run Code Online (Sandbox Code Playgroud)

具有共享 x 轴的双轴散点图

此外,如果您想删除连接数据点的线,您可以添加选项:ls='none'或更长的linestyle='none',如matplotlib 文档中所述。请记住,与大多数 Python 库一样,matplotlib 选择了合理的默认值。对于对 的普通调用plot,默认值是ls='-'生成连接线。