【问题标题】:How to group already grouped bar?如何对已经分组的栏进行分组?
【发布时间】:2021-12-18 20:27:51
【问题描述】:

假设我的 pandas 数据框如下所示:

import pandas as pd
df=pd.DataFrame({'run-1a':[0.3, 0.3, 0.4, 0.4], 'run-1b':[0.3, 0.3, 0.4, 0.5],"run-2a":[0.7, 0.9, 0.8, 0.9],"run-2b":[0.2, 0.3, 0.5, 0.5], "Person":["person1","person2","person3","person4"]})
df

现在我用它做了一个酒吧:

import matplotlib.pyplot as plt
color_list = ['b','lightskyblue', 'g','lightgreen']
ax = df.plot(x='Person',y=['run-1a','run-1b','run-2a','run-2b'], kind='bar', color=color_list)
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.xticks(rotation="horizontal")
plt.show()

结果如下:

但是,我想为每个人将 run-1a 与 run1brun2a 与 run2b 分组。当我搜索一些解决方案时,我只发现如何使分组条看起来像我上面的情节,我不需要。

这是我的情节应该是什么样子的草图:

请问有没有一个选项如何为每个人进行分组? 非常感谢。

【问题讨论】:

    标签: python-3.x pandas dataframe matplotlib bar-chart


    【解决方案1】:

    如果我理解正确,您可以在其他栏之间添加空栏,这样您将获得 4 列,每两个栏是分开的。

    import pandas as pd
    df=pd.DataFrame({'':[0,0,0,0],'run-1a':[0.3, 0.3, 0.4, 0.4], 'run-1b':[0.3, 0.3, 0.4, 0.5],"run-2a":[0.7, 0.9, 0.8, 0.9],"run-2b":[0.2, 0.3, 0.5, 0.5], "Person":["person1","person2","person3","person4"]})
    color_list = ['b','lightskyblue','w', 'g','lightgreen']
    ax = df.plot(x='Person',y=['run-1a','run-1b','','run-2a','run-2b'], kind='bar', color=color_list)
    plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
    plt.xticks(rotation="horizontal")
    plt.show()
    

    【讨论】:

    • 感谢您的帮助!这是非常好的解决方案
    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-06
    • 2015-04-07
    • 2019-04-01
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多