【问题标题】:Build a Bar Chart from a List of Tuples - Python从元组列表构建条形图 - Python
【发布时间】:2017-03-05 18:34:00
【问题描述】:

我需要从我得到的元组列表中构建一个条形图,其中键名作为 x 轴上显示的每个条的标签,值作为条的高度。 这是我的输入的样子:

top20 = [('Blues', 2008), ('Guadeloupe', 1894), ('Yorkshire', 1216), ('Monterrey', 1112), ('Government', 1081), ('Algeria', 972), ('Rotterdam', 920), ('Sardinia', 913), ('Mac OS', 864), ('Coffee', 858), ('Netherlands', 849), ('Oklahoma', 829), ('Tokyo', 817), ('Boating', 801), ('Finland', 765), ('Michigan', 737), ('Tamaulipas', 733), ('Croatia', 722), ('Kagoshima', 701), ('Isuzu', 678)]

这是我目前使用的代码:

plt.bar(range(len(top20)), top20.values(), align='center')
plt.xticks(range(len(top20)), list(top20.keys()))
plt.show()

我知道,逻辑遵循字典作为输入,但我想不出一种方法来完成这项工作。请提供帮助,并在此先感谢您。

【问题讨论】:

    标签: python plt


    【解决方案1】:

    您可以将元组列表转换为列表并使用它:

    plt.bar(range(len(top20)), [val[1] for val in top20], align='center')
    plt.xticks(range(len(top20)), [val[0] for val in top20])
    plt.xticks(rotation=70)
    plt.show()
    

    输出:如果你删除align='center' 那就是:

    更新:[在 cmets 中询问 OP]

    如何为每个条形添加值标签以使图表更全面?

    x_labels = [val[0] for val in top20]
    y_labels = [val[1] for val in top20]
    plt.figure(figsize=(12, 6))
    ax = pd.Series(y_labels).plot(kind='bar')
    ax.set_xticklabels(x_labels)
    
    rects = ax.patches
    
    for rect, label in zip(rects, y_labels):
        height = rect.get_height()
        ax.text(rect.get_x() + rect.get_width()/2, height + 5, label, ha='center', va='bottom')
    

    输出:

    还有

    dict(top20)
    

    输出:

    {'Algeria': 972,
     'Blues': 2008,
     'Boating': 801,
     'Coffee': 858,
     'Croatia': 722,
     'Finland': 765,
     'Government': 1081,
     'Guadeloupe': 1894,
     'Isuzu': 678,
     'Kagoshima': 701,
     'Mac OS': 864,
     'Michigan': 737,
     'Monterrey': 1112,
     'Netherlands': 849,
     'Oklahoma': 829,
     'Rotterdam': 920,
     'Sardinia': 913,
     'Tamaulipas': 733,
     'Tokyo': 817,
     'Yorkshire': 1216}
    

    将直接将您的元组列表转换为字典。

    【讨论】:

    • 欢迎您@MaiiaS。如果这解决了您的问题,请勾选/upvote :)
    • 如何为每个条形添加值标签以使图表更全面?
    • @MaiiaS。这有点难。让我弄清楚。
    • @MaiiaS。我在条形顶部添加了值。这就是你要找的对吗?
    • 维卡什,你太棒了!!非常感谢!
    猜你喜欢
    • 2012-12-05
    • 2021-10-14
    • 2020-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 2016-07-12
    • 1970-01-01
    相关资源
    最近更新 更多