Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 条形图不符合matplotlib中图例文本的顺序_Python_Pandas_Matplotlib - Fatal编程技术网

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

Python 条形图不符合matplotlib中图例文本的顺序,python,pandas,matplotlib,Python,Pandas,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() 还有我的图表:

刚才注意到图例文本的顺序与绘图栏的顺序不同。我希望在传说的第一位看到“香蕉”。有可能纠正这种行为吗?谢谢

我的代码是:

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\u 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()