Python Pandas:堆叠条形图图例反转并置于图外的实现问题
解决Pandas堆叠条形图图例反转被plt.legend覆盖的问题
你可以直接在plt.legend()中添加reverse=True参数来实现图例反转,这样既能调整图例位置,又不会覆盖反转设置。
修改后的代码:
df.plot.bar(x='Quarters', stacked=True, title='Top topics quarterly - proportion', color=['red', 'darkorange', 'gold', 'yellowgreen', 'darkgreen', 'turquoise', 'deepskyblue', 'navy', 'blueviolet', 'magenta', 'pink', 'grey', 'black']) plt.legend(loc='center left', bbox_to_anchor=(1, 0.5), reverse=True) plt.xlabel('Quarter', labelpad=10) plt.ylabel('Proportion of topic', labelpad=10)
另一种灵活实现方式:手动反转图例元素
如果需要更精细的控制,也可以先获取当前图例的手柄和标签,反转后再传入plt.legend():
df.plot.bar(x='Quarters', stacked=True, title='Top topics quarterly - proportion', color=['red', 'darkorange', 'gold', 'yellowgreen', 'darkgreen', 'turquoise', 'deepskyblue', 'navy', 'blueviolet', 'magenta', 'pink', 'grey', 'black']) handles, labels = plt.gca().get_legend_handles_labels() plt.legend(reversed(handles), reversed(labels), loc='center left', bbox_to_anchor=(1, 0.5)) plt.xlabel('Quarter', labelpad=10) plt.ylabel('Proportion of topic', labelpad=10)
问题原因说明
你之前在df.plot()中设置的legend='reverse'会生成反转后的初始图例,但后续调用plt.legend()会重新创建新的图例对象,直接覆盖了之前的反转配置。因此在plt.legend()中直接指定reverse=True,就能同时完成位置调整和图例反转的需求。
内容的提问来源于stack exchange,提问作者EvaJ
相关产品推荐
相关产品推荐

