【问题标题】:Bar chart using Dictionaries in python using matplotlib使用matplotlib在python中使用字典的条形图
【发布时间】:2018-07-02 21:08:51
【问题描述】:

我有两个字典:

A = {2018: 23, 2019: 30}
B = {2018: 26, 2019:35} 

现在我想为 A 和 B 绘制 2018/2019 年的趋势。但是在绘制条形图时,我得到以下结果。岁月正在扩大以填满空间,而 b 完全隐藏了 A。请建议如何绘制图表。

原始数据具有数学、科学和总分的平均分,我想在同一张图(条形图)上绘制两年以显示趋势。

【问题讨论】:

    标签: python matplotlib charts


    【解决方案1】:

    您可以通过条形图的左侧和右侧边缘对齐条形图(传递负宽度以使用右侧边缘对齐) - 这样您可以获得并排的条形图。或者,您可以堆叠条形。

    这是带有输出的代码:

    import matplotlib.pyplot as plt
    
    A = {2018: 23, 2019:30}
    B = {2018: 26, 2019:35}
    
    fig, (ax1, ax2) = plt.subplots(1,2, figsize=(12,5))
    
    ax1.bar(A.keys(), A.values(), width=0.2, align='edge', label='A')
    ax1.bar(B.keys(), B.values(), width=-0.2, align='edge', label='B')
    ax1.set_xticks([2018, 2019])
    ax1.set_xlabel('YEAR')
    ax1.legend()
    
    ax2.bar(A.keys(), A.values(), width=0.4, align='center', label='A')
    ax2.bar(B.keys(), B.values(), bottom=[A[i] for i in B.keys()], width=0.4, align='center', label='B')
    ax2.set_xticks([2018, 2019])
    ax2.set_xlabel('YEAR')
    ax2.legend()
    
    fig.show()
    

    编辑:如果您开始处理更多数据,那么使用可以更轻松地处理数据的包是有意义的。 Pandas 是一个很棒的包,可以为你做这件事。

    这是一个包含 4 组时间序列数据的示例:

    import matplotlib.pyplot as plt
    import pandas as pd
    
    A = {2018: 23, 2019:30}
    B = {2018: 26, 2019:35}
    C = {2018: 30, 2019:40}
    D = {2018: 20, 2019:50}
    
    df = pd.DataFrame([A,B,C,D], index=['A','B','C','D']).transpose()
    
    fig, ax= plt.subplots(1,1, figsize=(6,5))
    
    df.plot.bar(ax=ax)
    ax.set_xlabel('YEAR')
    
    fig.tight_layout()
    fig.show()
    

    输出是这个图:

    【讨论】:

    • 非常感谢,罗比,想问一下,如果我要绘制 3 个变量(A、B、C)怎么办。我们将如何调整宽度?
    • 嗨@ApoorvaaSingh - 查看编辑,希望对您有所帮助!
    • 谢谢。这很有帮助:)
    • 另外,如果你能告诉我如何旋转 Xlabels(我尝试使用 ax.set_xticklabels(rotation = 90),似乎不起作用
    • 当然,您必须将该参数添加到对 panda 的 bar 函数的调用中:df.plot.bar(ax=ax, rot=0)
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2022-01-07
    • 2018-05-18
    • 2018-02-08
    • 1970-01-01
    • 2019-01-31
    • 2019-01-01
    相关资源
    最近更新 更多