使用 matplotlib 进行一些自定义的堆叠条形图

Stacked barplot with some customizations using matplotlib

我尝试生成显示某些类别的堆叠条形图。但是,当前的数据框似乎很难将类别堆叠在一起。此外,有些年份没有计数,应将其删除。任何想法如何制作如下图所示的东西。非常感谢您的宝贵时间。

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
df=pd.read_csv(r"https://raw.githubusercontent.com/tuyenhavan/Course_Data/main/test_barplot.csv")
fig,ax=plt.subplots(figsize=(15,8))
ax.bar(df.Year,df.Number)
plt.xticks(np.arange(2000,2022),np.arange(2000,2022))
plt.xlabel("Year", fontsize=15)
plt.ylabel("Number", fontsize=15)
plt.xticks()
plt.show()

您可以重塑数据,使堆叠的类别成为列。然后你可以使用 pandas plot.bar 和 stacked=Truereindex 添加缺失的年份。

fig, ax=plt.subplots(figsize=(15,8))

df_stack = df.pivot_table(index="Year",
               columns="Category", 
               values="Number",
               aggfunc=sum)
df_stack = df_stack.reindex(np.arange(2000, 2022))

df_stack.plot.bar(stacked=True, ax=ax)

plt.xlabel("Year", fontsize=15)
plt.ylabel("Number", fontsize=15)

双农因一有一无尾随space.