69

我正在尝试创建一个复制图片的堆叠条形图,我的所有数据都与该 Excel 电子表格分开。

在此处输入图像描述

我无法弄清楚如何为它制作如图所示的数据框,也无法弄清楚如何制作堆叠条形图。我找到的所有示例都以与我尝试创建的不同的方式工作。

我的数据框是所有值的 csv,使用 pandas 数据框缩小到以下范围。

      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)
4

5 回答 5

131

您是否遇到错误,或者只是不确定从哪里开始?

%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)

堆积条形图

于 2014-05-02T13:00:33.583 回答
43

那应该有帮助

df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)
于 2018-07-05T15:57:15.207 回答
4

也许你可以使用熊猫交叉表功能

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

test5.plot(kind='bar', stacked=True)
于 2018-11-29T12:04:06.570 回答
3

如果要更改绘图的大小,请使用 argfigsize

df.groupby(['NFF', 'ABUSE']).size().unstack()
      .plot(kind='bar', stacked=True, figsize=(15, 5))
于 2019-09-17T16:05:20.313 回答
1
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()

这也将避免在条形图的图例中出现重复的颜色。

于 2021-10-03T20:41:51.817 回答