我有一个数据框,其中包含各个组的总数,我想绘制所有组的总数,但按组进行着色(以可视化每个组对总数的贡献)。
import pandas as pd
data = pd.DataFrame({'Group': [1, 2, 3, 4, 5],
'total': [20.0, 5.0, 30.0, 2.0, 21.0]})
我尝试使用
pd.crosstab(data.Group, data.total).plot.barh(stacked=True)
和
data['cumsum'] = data['total'].cumsum()
data['cumsum'].plot.barh(stacked=True)
和
data.pivot_table(values=['total'],
index='Group',
aggfunc='sum').plot(kind='bar', stacked=True)
但是这些都不是我想要的-这是一个单个的条,每个组的总数彼此堆叠并按组着色。
答案 0 :(得分:2)
尝试一下:
data.T.loc[['cumsum']].plot.barh(stacked=True)
答案 1 :(得分:0)
也许不是最好的方法,但是:
pd.concat([data[['total']],data[['total']]],axis=1).transpose().plot.area()
@Quang Hoang的解决方案肯定更好...