在matplotlib中使用scatter绘制两个y轴的散点图

5

我想在matplotlib上绘制两个不同的曲线,但其中一个图需要是散点图,或者没有连接点的线。有没有办法做到这一点?目前,我的绘图代码如下:

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()

然而,我想使用ax1.scatter(epoch, list_of_gas, 'b'),但是你不能在两个轴上同时使用scatter。有人知道解决这个问题的方法吗?比如说移除连接点之间的线条?

1个回答

8
您可以在双坐标轴(共享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')

共享x轴的双坐标散点图

如果你想要移除连接数据点的线条,你可以添加选项:ls='none' 或者更长的 linestyle='none',如 matplotlib 文档 中所提到的。请记住,像大多数 Python 库一样,matplotlib 已经选择了合理的默认值。对于普通的 plot 调用,默认值是 ls='-' 以产生连接的线条。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接