How to create stacked bar chart with given dataframe shape?

问题描述 投票:0回答:2

我有一个数据框,想通过在 x 轴上显示日期和在 y 轴上显示数量来创建堆积条形图。这是当前的数据框:

date       | product_group | quantity
2021-10-01 | A             | 10
2021-10-01 | C             | 10
2021-10-01 | Z             | 80
2021-11-11 | A             | 13
2021-12-12 | B             | 5..

我正在尝试使用我拥有的 matplotlib 或 seaborn 获得此输出:

  • x 轴上的数量(堆叠百分比)
  • y 轴上的日期
  • 为每个独特的日期和产品组选项堆叠数量。 IE。对于日期 10-01,我们有一个包含 A、C、Z 及其各自数量的堆栈(相对于彼此,即 A=0.1,C=0.1,Z=0.8)

这里最好的方法是什么?任何建议表示赞赏。谢谢

python pandas matplotlib plotly seaborn
2个回答
0
投票

这是一个单线

histplot

sns.histplot(df, y='date', weights='quantity', hue='product_group', multiple='stack')

输出:


0
投票

如果你不想使用 seaborn 而是 matplotlib,你可以这样做:

import pandas as pd 
import matplotlib.pyplot as plt

df = pd.DataFrame({
    'date': ['2021-10-01']*3 + ['2021-11-11', '2021-11-12'],
    'product_group': ['A', 'C', 'Z', 'A', 'B'],
    'quantity': [10,10,80,13,5]
})

# pivot values into columns for stacked plot
df = df.pivot(index='date', columns='product_group', values='quantity')

# create percentages
df.div(df.sum(axis=1),axis=0).plot.barh(stacked=True)

© www.soinside.com 2019 - 2024. All rights reserved.