如何让matplotlib以与我的列表相同的顺序订购条形图?

时间:2018-01-22 20:28:52

标签: python numpy matplotlib

对于一个课程项目,我正在绘制条形图。我有一个带有一堆标签的python列表(偶数,奇数,正方形,3的幂等)和一个numpy数组,用于保存与每个标签相关的概率(与标签列表的顺序相同)。当我绘制我的图表时

labels = ["even", "odd", "squares", "powers of 3"]

fig, ax = plt.subplots()
ax.barh(labels, probability)

它将条形图值按反向字母顺序排列,因此它不是按顺序排序,而是奇数,正方形,它是有序的正方形,3的幂,奇数,偶数等。我怎么能保持我的情节与我的顺序相同列出?

1 个答案:

答案 0 :(得分:1)

Axes.barh中的第一个参数是条形图的垂直坐标,因此您需要类似

的内容
fig, ax = plt.subplots()
y = np.arange(len(labels))
ax.barh(y, probability)
ax.set_yticks(y)
ax.set_yticklabels(labels)

这样,条形码将按照列表的顺序从上到下排序。如果你想要反过来,你可以简单地做

fig, ax = plt.subplots()
y = np.arange(len(labels))
ax.barh(y, probability)
ax.set_yticks(y)
ax.set_yticklabels(labels)
ax.invert_yaxis()

代替。

enter image description here

编辑:鉴于@ExitanceOfBeingErnest的评论,我应该注意上面是用matplotlib 2.1.1测试的。