Python 在matplotlib条形图中设置xticks时顺序错误
我正在尝试使用matplotlib绘制一个OrderedDict。字典d按值降序排列: OrderedDict([(1792), (2, 199), (3, 18), (4, 8), (8, 3), (5, 2), (10, 2), (6, 1), (9,1)]) 这是我用来绘制条形图的代码:Python 在matplotlib条形图中设置xticks时顺序错误,python,matplotlib,bar-chart,ordereddict,Python,Matplotlib,Bar Chart,Ordereddict,我正在尝试使用matplotlib绘制一个OrderedDict。字典d按值降序排列: OrderedDict([(1792), (2, 199), (3, 18), (4, 8), (8, 3), (5, 2), (10, 2), (6, 1), (9,1)]) 这是我用来绘制条形图的代码: fig, axs = plt.subplots(1) axs.bar(d.keys(), d.values()) axs.set_xticks(list(d.keys())) axs.set_yscal
fig, axs = plt.subplots(1)
axs.bar(d.keys(), d.values())
axs.set_xticks(list(d.keys()))
axs.set_yscale('log')
这是结果图:
在我看来,x轴标签的正确顺序是[1,2,3,4,8,5,10,6,9]。为什么条形图是按升序绘制的
我能否按照相同的d顺序绘制条形图?绘制时,数值会自动排序,这更有意义。如果要确保顺序正确,可以手动绘制每个条形图:
for i,k in enumerate(d.keys()):
axs.bar(i, d[k])
axs.set_xticks(range(len(d)))
axs.set_xticklabels(d.keys())
axs.set_yscale('log')
输出:
或者,您可以将键转换为字符串:
axs.bar(list(map(str,d.keys()) ), d.values())
axs.set_yscale('log')
输出: