【问题标题】:Creating a multi-bar plot in MatplotLib在 MatplotLib 中创建多条形图
【发布时间】:2022-09-30 20:47:44
【问题描述】:

给定一个简单的 pd.Dataframe df,如下所示:

                                                      workflow  blocked_14  blocked_7  blocked_5  blocked_2  blocked_1
au_in_service_order_response      au_in_service_order_response       12.00      11.76      15.38       25.0        0.0
au_in_cats_sync_billing_period  au_in_cats_sync_billing_period        3.33       0.00       0.00        0.0        0.0
au_in_MeterDataNotification        au_in_MeterDataNotification        8.70       0.00       0.00        0.0        0.0

我想创建一个条形图,将blocked_* 列显示为 x 轴。

由于df.plot(x=\'workflow\', kind=\'bar\') 显然将workflows 放在x 轴上,所以我尝试了ax = blocked_df.plot(x=[\'blocked_14\',\'blocked_7\',...], kind=\'bar\') 但这给了我

ValueError: x 必须是标签或位置

我将如何创建 5 个 y 值并让每个条形显示工作流的相应值?

    标签: python pandas matplotlib


    【解决方案1】:

    由于pandas 将 x 解释为索引,将 y 解释为要绘制的值,因此您需要先转置数据框。

    import matplotlib.pyplot as plt
    
    ax = df.set_index('workflow').T.plot.bar()
    plt.show()
    

    但这看起来不太好,不是吗?让我们确保所有标签都适合Axes,并将图例移到绘图之外,以免混淆数据。

    import matplotlib.pyplot as plt
    
    fig, ax = plt.subplots(figsize=(14, 6), layout='constrained')
    ax = df.set_index('workflow').T.plot.bar(legend=False, ax=ax)
    ax.legend(loc='upper left', bbox_to_anchor=(1, .8))
    plt.show()
    

    【讨论】:

      猜你喜欢
      • 2016-11-19
      • 2021-04-21
      • 1970-01-01
      • 2020-09-26
      • 2012-03-26
      • 2014-06-02
      • 1970-01-01
      • 2020-05-06
      • 2011-08-13
      相关资源
      最近更新 更多