如何在 pandas 中绘制堆叠直方图

How to draw stacked histogram in pandas

我在 pandas 中有此数据:

        fork  percentage_remains
0      True            20.000000
1      False            9.090909
2      False            2.000000
3      False            0.000000
4      False            0.000000
5      True            33.333333
6      False           20.000000
...

我想绘制堆叠直方图,其中 x 轴为 percentage_remains,y 轴为 degree(这意味着该容器中的项目数)并且它会按 fork 分组 - 同一图中的两个堆叠直方图,其中第一个直方图针对具有 fork == True 的所有值,第二个直方图针对具有 fork == False 的所有值。我正在尝试:

subset.plot(kind="hist", stacked=True, by="fork")

但它创建了这个图像: 并且从这个直方图中的标签和值来看,这似乎实际上并没有按 "fork" 属性分组。

这样的事情怎么样

import matplotlib.pyplot as plt
subset = pd.DataFrame({'fork': {0: True, 1: False, 2: False, 3: False, 4: False, 5: True, 6: False},
 'percentage_remains': {0: 20.0,
  1: 9.0909089999999999,
  2: 2.0,
  3: 0.0,
  4: 0.0,
  5: 33.333333000000003,
  6: 20.0}})

通过布尔索引过滤 fork == True

filter = subset["fork"] == True`

那就直接用matplotlib吧。请注意,我正在传递一个列表,一个元素是真值,另一个是假值

    plt.hist([subset["percentage_remains"][filter],subset["percentage_remains"][~filter]],
                                                   stacked=True)
        plt.show()