【问题标题】:Plot stacked histogram with grouped DataFrame使用分组的 DataFrame 绘制堆叠直方图
【发布时间】:2018-02-06 19:22:14
【问题描述】:

我希望在不同类可见的地方堆叠直方图。

目前我的直方图没有包含此代码的类:

plt.hist(hist_matrix2.column_name)

产生这个直方图:

和另一个具有相同数据的直方图,按使用此代码的类分组:

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

产生这个直方图:

正如您所见,虽然设置了参数,但类在那里但没有堆叠。我可以做些什么来堆叠类?

【问题讨论】:

    标签: python pandas plot histogram visualization


    【解决方案1】:

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