python-matplotlib.pyplot:绘制数据帧时如何包括自定义图例?

我在同一张图表中绘制了两个 dataframe :USDEUR汇率和3天移动平均线.

df.plot(ax=ax, linewidth=1)
rolling_mean.plot(ax=ax, linewidth=1)

这两个 dataframe 都标记为“值”,因此我想对其进行自定义:

enter image description here

我尝试传递标签选项,但没有成功,因为该选项似乎是matplotlib.axes.Axes.plot专用的,而不是pandas.DataFrame.plot专用的.因此,我尝试使用轴代替,并传递每个标签:

ax.plot(df, linewidth=1, label='FRED/DEXUSEU')
ax.plot(rolling_mean, linewidth=1, label='3-day SMA')

但是,除非我之后显式调用ax.legend(),否则图例根本不会显示.

是否可以在传递自定义标签的同时绘制 dataframe ,而无需其他显式调用?

最佳答案

使用df.plot()设置标签时,必须指定要绘制的数据:

fig, (ax1, ax2) = plt.subplots(1,2)

df = pd.DataFrame({'Value':np.random.randn(10)})
df2 = pd.DataFrame({'Value':np.random.randn(10)})

df.plot(label="Test",ax=ax1)
df2.plot(ax=ax1)

df.plot(y="Value", label="Test",ax=ax2)
df2.plot(y="Value", ax=ax2)

ax1.set_title("Reproduce problem")
ax2.set_title("Possible solution")

plt.show()

这使:

enter image description here

更新:绘制 dataframe 和绘制序列之间似乎有所不同.绘制 dataframe 时,标签取自列名.但是,当指定y =“ Value”时,您将绘制一个序列,然后实际使用label参数.