如何使用pandas.DataFrame内置功能创建叠加条形图
使用pandas DataFrame实现与原生matplotlib一致的叠加条形图
没问题,我帮你把原生matplotlib的叠加条形图代码转换成pandas DataFrame的实现方式,保证条形的叠加顺序和布局完全一致。
原代码逻辑分析
你的旧代码是通过三次调用plt.bar()来实现叠加:
- 先绘制最底层的
d系列 - 然后在上面叠加
c系列 - 最后在最上层叠加
b系列
要在pandas里复刻这个效果,关键是保证DataFrame的列顺序和原代码的绘图顺序对应,因为pandas的堆叠条形图会按照列的顺序从下到上叠加。
实现代码
import pandas as pd import matplotlib.pyplot as plt # 生成原始数据 a = range(1, 25) b = list(a) # 转成列表避免range对象的潜在问题 c = [x+2 for x in b] d = [x*2 for x in c] # 构造DataFrame,列顺序对应原绘图顺序:d(底层)、c(中层)、b(上层) df = pd.DataFrame({ 'd': d, 'c': c, 'b': b }, index=a) # 绘制堆叠条形图 df.plot(kind='bar', stacked=True, figsize=(10,6)) plt.show()
关键说明
- 构造DataFrame时,列的顺序是
d、c、b,这和你原代码中plt.bar的调用顺序完全匹配,确保叠加层次一致:d在最底部,c在中间,b在最顶部。 - 使用
stacked=True参数开启堆叠模式,这是pandas实现叠加条形图的核心参数。 - 把
a作为DataFrame的索引,这样x轴的刻度会和原代码保持一致。
运行这段代码后,你会得到和原代码完全相同布局的叠加条形图。
内容的提问来源于stack exchange,提问作者Boris L.
相关产品推荐
相关产品推荐

