Matplotlib 散点图双 y 轴

Matplotlib scatter plot dual y-axis

我试图找出如何在 matplotlib 中使用两个不同的 y 轴值创建散点图。 现在我有一个,需要在 y 上添加第二个索引列值。

points1 = plt.scatter(r3_load["TimeUTC"], r3_load["r3_load_MW"],
                     c=r3_load["r3_load_MW"], s=50, cmap="rainbow", alpha=1) #set style options
plt.rcParams['figure.figsize'] = [20,10]
#plt.colorbar(points)

plt.title("timeUTC vs Load")
#plt.xlim(0, 400)
#plt.ylim(0, 300)
plt.xlabel('timeUTC')
plt.ylabel('Load_MW')
cbar = plt.colorbar(points1)
cbar.set_label('Load')

我期望的结果是这样的:

所以第二个散点集应该用于 TimeUTC 与索引。颜色不是主题;)同样在 excel 中,y 轴是不同的位置,但没关系。

感谢您的帮助!谢谢,宝琳娜

根据评论中的建议继续。

two ways of using matplotlib.

  • 通过 matplotlib.pyplot 界面,就像您在 .plt
  • 的原始代码片段中所做的那样
  • object-oriented 方式。这是使用 matplotlib 的建议方法,尤其是当您需要像您的情况一样进行更多自定义时。在您的代码中,ax1Axes instance.

Axes 实例中,您可以使用 Axes.plot and Axes.scatter 方法绘制数据,这与您通过 pyplot 界面所做的非常相似。这意味着,您可以编写 Axes.scatter 调用而不是 .plot 并使用与原始代码中相同的参数:

fig, ax1 = plt.subplots()

ax2 = ax1.twinx()

ax1.scatter(r3_load["TimeUTC"], r3_load["r3_load_MW"],
                     c=r3_load["r3_load_MW"], s=50, cmap="rainbow", alpha=1)
ax2.plot(r3_dda249["TimeUTC"], r3_dda249.index, c='b', linestyle='-')

ax1.set_xlabel('TimeUTC')
ax1.set_ylabel('r3_load_MW', color='g')
ax2.set_ylabel('index', color='b')

plt.show()