使用分组的DataFrame绘制堆叠直方图

3

我希望得到一个堆叠直方图,不同类别之间的区别能被看清。

目前我只有没有类别信息的直方图,使用以下代码生成:

plt.hist(hist_matrix2.column_name)

以下代码能够生成按类分组的直方图,相同的数据在此展示:

histogram without classes

与前者不同,此直方图数据已被分类分组。

hist_matrix2.groupby("number").column_name.plot.hist(alpha=0.5, bins  = [0,5,10,15,20,25,30], stacked = True)

这是生成的直方图:

带类别的直方图

如您所见,类别已经存在,但它们并没有堆叠在一起,尽管参数已经设置。我该怎么做才能使类别堆叠起来呢?

1个回答

0

plt.hist有内置的堆叠标志可以设置:

plt.hist(hist_matrix2.column_name, stacked=True)

针对您的问题进行编辑,对于具有多个层级堆叠的长数据,首先需要将数据重构为列表的列表:

wide=hist_matrix2.pivot( columns='number', values='column_name')
#This creates many missing values which pandas does not like, so we drop them
widelist=[wide[col].dropna() for col in wide.columns]
# and the stacked graph is here
plt.hist(widelist,stacked=True)
plt.show()

但这并没有按类别分开。只有在您的类别由列分隔时,此堆叠才有效。在我的情况下,在“数字”列中是类标签。通过groupby,我可以获得分离的类别,但它们重叠在一起,而我想要它们堆叠(plot2)。 - Mimi Müller

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接