小能豆

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

py

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

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

1.png


阅读 59

收藏
2025-03-02

共1个答案

小能豆

您可以重塑数据,使堆叠的类别成为列。然后,您可以将 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)

双农业是由于一个带有尾随空格,另一个不带有尾随空格。

1.png

2025-03-02