繁体   English   中英

条形图不符合matplotlib中图例文本的顺序

[英]bar plot does not respect order of the legend text in matplotlib

只是注意到图例文本与绘图栏的顺序不同。 我希望看到“香蕉”成为传说中的第一名。 是否可以纠正这种行为? 谢谢

我的代码是:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({"Apple" : [2,3,4,1], "Banana" : [4,2,1,2]})

ax = df.plot.barh()
ax.legend()

plt.show()

我的图:

在此处输入图片说明

图例标签实际上已正确订购。 Matplotlib的垂直轴默认从底部开始并向上延伸。 因此,与图例中一样,蓝色条形为第一。

您可以反转图例的句柄和标签:

h, l = ax.get_legend_handles_labels()
ax.legend(h[::-1], l[::-1])

在此处输入图片说明

您也可以决定反转y轴。

ax = df.plot.barh()
ax.invert_yaxis()

在此处输入图片说明

图例处理程序的顺序是按列顺序选择的,您必须以相反的顺序对列的数据帧名称进行排序(对列轴使用reindex_axis )。

import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame({"Apple" : [2,3,4,1], "Banana" : [4,2,1,2]})
df = df.reindex_axis(reversed(sorted(df.columns)), axis = 1)
ax = df.plot.barh()
ax.legend()

plt.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM