绘制一张叠加的柱状图

我试图创建一个堆叠条形图与熊猫,复制图片,所有我的数据是独立的,从该 Excel 电子表格。

enter image description here

我不知道如何为它制作一个如图所示的数据框架,也不知道如何制作堆叠的条形图。所有的例子,我定位工作在不同的方式,我试图创建。

我的数据框架是一个所有值的 csv 缩小到以下与熊猫数据框架。

      Site Name    Abuse/NFF
0    NORTH ACTON       ABUSE
1    WASHINGTON         -
2    WASHINGTON        NFF
3    BELFAST            -
4    CROYDON            -

我已经设法计算总数的数据,并得到每个网站的个人计数,我只是似乎不能把它结合在一起,以图形的方式。

如果你能给我一些强有力的指导,我会很感激的。

完成代码,非常感谢您的帮助完成。

test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0)


test5.plot(kind='bar', stacked=True)
171072 次浏览

您是否出现了错误,或者只是不确定从哪里开始?

%pylab inline
import pandas as pd
import matplotlib.pyplot as plt


df2 = df.groupby(['Name', 'Abuse/NFF'])['Name'].count().unstack('Abuse/NFF').fillna(0)
df2[['abuse','nff']].plot(kind='bar', stacked=True)

stacked bar plot

应该会有帮助

df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)

也许你可以用 熊猫交叉表函数

test5 = pd.crosstab(index=faultdf['Site Name'], columns=faultdf['Abuse/NFF'])


test5.plot(kind='bar', stacked=True)

如果要更改绘图的大小,请使用参数 figsize

df.groupby(['NFF', 'ABUSE']).size().unstack()
.plot(kind='bar', stacked=True, figsize=(15, 5))
from matplotlib import cm
cmap = cm.get_cmap('Spectral') # Colour map (there are many others)


df.plot(kind='bar', stacked=True, figsize=(20, 10), cmap=cmap, edgecolor='None')
plt.show()

这也可以避免条形图图例中的重复颜色。