matplotlib.pyplot:如何在绘制数据帧时包含自定义图例?

时间:2018-01-12 11:50:46

标签: python python-3.x pandas

我正在同一图表中绘制两个数据框:USDEUR汇率和3天移动平均线。

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

两个数据帧都标记为“值”,因此我想自定义:

enter image description here

我尝试传递label选项,但这不起作用,因为此选项似乎是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()

是否可以在传递自定义标签时绘制数据帧而无需额外的显式调用?

1 个答案:

答案 0 :(得分:4)

使用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

更新:似乎绘制数据框和绘制系列之间存在差异。绘制数据框时,标签取自列名。但是,在指定y="Value"时,您正在绘制系列,然后实际使用label参数。

相关问题