在 matplotlib barplot 中设置 xticks 时顺序错误
Wrong order when setting xticks in matplotlib barplot
我正在尝试使用 matplotlib 绘制 OrderedDict。字典d按值降序排列:
OrderedDict([(1, 792),
(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_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')
输出:
我正在尝试使用 matplotlib 绘制 OrderedDict。字典d按值降序排列:
OrderedDict([(1, 792), (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_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')
输出: