首页 > 解决方案 > 如何对已经分组的栏进行分组?

问题描述

假设我的 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.xpandasdataframematplotlibbar-chart

解决方案


如果我理解正确,您可以在其他条之间添加空条,这样您将获得 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()

在此处输入图像描述


推荐阅读