如何在条形图上仅堆叠部分数据帧系列

2024-04-26 05:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下数据帧:

from matplotlib import pyplot as plt
import pandas as pd

plotdata = pd.DataFrame({
    "pies_2018":[40, 12, 10, 26, 36],
    "pies_2019":[19, 8, 30, 21, 38],
    "pies_2020":[10, 10, 42, 17, 37],
    "pies_produced": [100, 80, 75, 10, 60]
    }, 
    index=["Dad", "Mam", "Bro", "Sis", "Me"]
)
plotdata.plot(kind="bar")

plt.title("Mince Pie Consumption Study Results")
plt.xlabel("Family Member")
plt.ylabel("Pies Consumed")

现在我正在寻找一种绘制堆叠条形图的方法,但我只想堆叠一些系列(pies_20*),并且应该在堆叠系列旁边显示生产的pies_,以显示消费的pies与生产的pies的比较情况。所以最后我应该给每个家庭成员两个酒吧。我不想对馅饼进行求和,因为我仍然想在时间上区分消费。参见绘制的示例了解Bro

是否可以在堆叠的条形图旁边显示一个具有每年值的图例

enter image description here

多谢各位


1条回答
网友
1楼 · 发布于 2024-04-26 05:25:46

尝试使用选项stackedposition打印两次:

fig, ax = plt.subplots(figsize=(10,6))

# plot first 3 columns, stacked and shifted left
plotdata.iloc[:,:-1].plot.bar(stacked=True, position=1, width=.4, ax=ax)

# plot last column, shifted right
plotdata.iloc[:,-1:].plot.bar(position=0,color='C4', width=.4, ax=ax)

ax.set_xlim(-0.5, len(plotdata)-0.5)

输出:

enter image description here

相关问题 更多 >