Python 如何更改熊猫中分组条形图的颜色?

Python 如何更改熊猫中分组条形图的颜色?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个情节,你会同意,它不太好看。到目前为止,我制作的其他绘图都有一些颜色和分组 我试着手动设置颜色,但它仍然是黑色的。我做错了什么?理想情况下,它也会将相同的标签聚集在一起 df.groupby(['tags_0', 'gender']).count().plot(kind='barh', legend=False, color=['r', 'g', 'b']) 您需要取消堆叠结果: df.groupby(['tags_0', 'gender']).gender.count().unsta

我有一个情节,你会同意,它不太好看。到目前为止,我制作的其他绘图都有一些颜色和分组

我试着手动设置颜色,但它仍然是黑色的。我做错了什么?理想情况下,它也会将相同的标签聚集在一起

df.groupby(['tags_0', 'gender']).count().plot(kind='barh', legend=False, color=['r', 'g', 'b'])

您需要取消堆叠结果:

df.groupby(['tags_0', 'gender']).gender.count().unstack().plot(kind='barh', legend=False, color=['r', 'g', 'b'])


我没有你的数据,所以只对每个标签/性别组合使用一个值。

你需要将数据展平。使用unstack()是一种方法。或者,您可以使用pivot_table()。这是代码

import pandas as pd

# try to simulate your data
characters = 'Tank Support Marksman Mage Figher Assassin'.split(' ')
random_weight = abs(np.random.randn(len(characters)))
random_weight = random_weight / random_weight.sum()
gender = 'male female'.split(' ')

index1 = np.random.choice(characters, size=1000, p=random_weight)
index2 = np.random.choice(gender, size=1000, p=[0.4, 0.6])
multi_index = pd.MultiIndex.from_tuples(list(zip(index1, index2)), names=['character', 'gender'])

data = pd.DataFrame(np.random.randn(1000), columns=['value'], index=multi_index)
data.reset_index(inplace=True)

# do your groupby
group_counts = data.groupby(['character', 'gender']).count().reset_index()
# do pivot table
table = pd.pivot_table(group_counts, index='gender', columns='character', values='value')
# set your own colors here
table.plot(kind='barh', color=['r', 'g', 'b', 'k', 'm', 'y'])

我对unstack一无所知。这些医生使我感到困惑。但它很有魅力,我几周前就这么做了。也许是其他人投了反对票?