【问题标题】:Wrong order when setting xticks in matplotlib barplot在 matplotlib barplot 中设置 xticks 时顺序错误
【发布时间】:2020-11-18 00:27:17
【问题描述】:

我正在尝试使用 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 的相同顺序绘制条形吗?

【问题讨论】:

    标签: python matplotlib bar-chart ordereddict


    【解决方案1】:

    绘图时数值自动排序,更有意义。如果要确保顺序正确,可以手动绘制每个条形图:

    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')
    

    输出:

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 2014-09-24
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      相关资源
      最近更新 更多