Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.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_Numpy_Matplotlib - Fatal编程技术网

Python 如何让matplotlib以与列表相同的顺序排列条形图?

Python 如何让matplotlib以与列表相同的顺序排列条形图?,python,numpy,matplotlib,Python,Numpy,Matplotlib,对于一个类项目,我正在绘制条形图。我有一个python列表,其中包含一组标签(偶数、奇数、正方形、3的幂等)和一个numpy数组,用于保存与每个标签相关联的概率(与标签列表的顺序相同)。当我绘制图表时 标签=[“偶数”、“奇数”、“平方”、“3的幂] 它将条形图的值按逆字母顺序排列,因此它不是按偶数、奇数、正方形排序,而是按正方形、3的幂、奇数、偶数等排序。如何使我的绘图与列表保持相同的顺序?中的第一个参数是条形图的垂直坐标,因此您可能需要类似于 fig, ax = plt.subplots()

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

标签=[“偶数”、“奇数”、“平方”、“3的幂]

它将条形图的值按逆字母顺序排列,因此它不是按偶数、奇数、正方形排序,而是按正方形、3的幂、奇数、偶数等排序。如何使我的绘图与列表保持相同的顺序?

中的第一个参数是条形图的垂直坐标,因此您可能需要类似于

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()
相反


编辑:鉴于@ImportanceOfBeingErnest的评论,我应该注意到上面的测试是使用
matplotlib
2.1.1.

到目前为止,matplotlib的2.1.2版,分类轴将按字母顺序排序。这是一种不希望出现的行为,但尚未修复,请参见例如。很可能,在将来的某个时候会修复它。目前唯一的选择是绘制数字,就像matplotlib 2.1之前一样。显示了如何执行此操作。您可以使用
ax.invert_yaxis()
来反转轴,而不是绘制反转列表(
[:-1]
),这可能会使更改更容易,例如在
barh
bar
之间。啊,很有用,让我更新答案以反映这一点。
fig, ax = plt.subplots()
y = np.arange(len(labels))
ax.barh(y, probability)
ax.set_yticks(y)
ax.set_yticklabels(labels)
ax.invert_yaxis()