Pandas绘图中如何反转图例顺序

9
我有以下代码来展示堆叠条形图
handles = df.toPandas().set_index('x').T.plot(kind='bar', stacked=True, figsize=(11,11))
    plt.legend(loc='best', title="Line", fontsize = 'small', framealpha=0)
    plt.ylabel("'" + lineName + "'")
    plt.show()

我想要反转图例的顺序,我使用了handles=handles[::-1],但是出现了错误。

请包含发生的错误以及关于这个数据框的一些细节。 - Jezzamon
如何反转数据框,请参见此处:https://dev59.com/j2Ij5IYBdhLWcg3wRTL3 - Jezzamon
2个回答

19

DataFrame.plot接受一个legend参数,可取值True/False/'reverse'。您需要设置legend='reverse'


它没有起作用:df.toPandas().set_index('Product_Line_Name').T.plot(kind='bar', stacked=True, figsize=(11,11), legend='reverse') plt.legend(loc='best', title="Line", fontsize = 'small', framealpha=0) plt.ylabel("'" + lineName + "'") plt.show() - YAKOVM
1
你的第二个图例覆盖了第一个。 - Stop harming Monica
1
@Goyo,我能在绘图中添加第二个图例参数吗?或者在图例中说反过来? - YAKOVM

14

这是一个使用matplotlib直接生成图例的最简示例。

df = pd.DataFrame({'a': np.random.randn(10) + 1, 'b': np.random.randn(10),
                   'c': np.random.randn(10) - 1}, columns=['a', 'b', 'c'])
ax = df.plot(kind='bar', stacked=True)
handles, labels = ax.get_legend_handles_labels()
ax.legend(reversed(handles), reversed(labels), loc='upper left')  # reverse both handles and labels

条形图

(上面的绘图使用了 plt.style.use('ggplot').)

还可以参考matplotlib图例指南


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