使用Pandas DF和Matplotlib绘制主(条)和次(线)轴,但图例要一起显示。。?

2024-04-25 22:51:51 发布

您现在位置:Python中文网/ 问答频道 /正文

用两个图例绘制的绘图一个图例用于主轴上的条形图,另一个用于辅助轴上的折线图,如何将这两个图例组合在一起。??然后把绘图保存在电源插座上

下面是我的代码,它将图例放在两个位置,但我希望它们一个比另一个组合在一起。在

ax = df.plot(x=['TIME'],y =['Column A'],kind='bar',use_index=True,color='g',legend=True)
ax.set_ylabel("Label A")

ax2 = ax.twinx()

ax2.plot(df[['Column B']].values,linestyle='-', marker='o', linewidth=2.0,color ='b')
ax2.set_ylabel("Label B")
ax2.legend('LegendB',loc=1)

这将生成绘图,但图例B位于右上角,图例A默认放置在左上角。我还可以看到,传说B是削减,并没有显示所有的字符。在

当我将ax2.legend行更改为

^{pr2}$

然后两个铭文都叠加在一起其他的。很好实际上是一团糟。在

为了保存图形,我将代码用作

ax2.legend('LegendB',loc=1)    
fig = ax.get_figure()
fig.set_size_inches(9.5, 3)
fig.savefig('test.png', bbox_inches='tight',dpi=100)
plt.show() ## To Show the Plot

但这保存了图例在LOC=1处相互叠加的图形

所以我的问题是: 1如何将一个又一个的图例组合起来。。?? 2为什么要保存它,因为它正在显示的情节。。??在

谢谢各位


Tags: 代码true绘图dfplotfigcolumnax
1条回答
网友
1楼 · 发布于 2024-04-25 22:51:51

您可以合并多个轴的图例,但需要手动(半)执行此操作。这里有一些陷阱需要注意,因为您混合了pandas图和{}图。有关详细信息,请参见matplotlib's legend guide。在

以下是我要写的:

ax1 = df.plot(x=['TIME'], y=['Column A'], kind='bar', color='r', legend=False)
ax1.set_ylabel("Label A")
ax2 = ax1.twinx()
ax2.plot(df['Column B'].values, linestyle='-', marker='o', linewidth=2.0, color ='b', label="test2")
ax2.set_ylabel("Label B")

lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax2.legend(lines1 + lines2, labels1 + labels2, loc=0)

注意,我添加了一个label参数到ax2.plot。这对于确保ax2.get_legend_handles_labels()返回行的句柄非常重要。Pandas'plot会自动添加一个标签,因此没有任何操作。在

还请注意,我将legend=False传递给pandasplot函数,以禁止自动创建第一个图例。在

相关问题 更多 >