如何在pandas绘图中将同一列两类数据合并为单根堆叠柱状条
实现堆叠柱状图的方法
核心逻辑:你当前使用的是长表结构数据,需要先转换为宽表(透视表)格式,再开启堆叠参数即可实现需求。
完整可运行代码
import pandas as pd # 原始数据 df = pd.DataFrame([['A', 'Blue', 30], ['A', 'Red', 180], ['B', 'Blue', 50], ['B', 'Red', 340], ['C', 'Blue', 70], ['C', 'Red', 930]]) df.columns = ['Type', 'Color', 'Count'] # 1. 长表转宽表,调整列顺序保证Red层在下方、Blue层在上方 df_pivot = df.pivot(index='Type', columns='Color', values='Count')[['Red', 'Blue']] # 2. 绘制堆叠柱状图,指定颜色与类别对应 df_pivot.plot.bar(stacked=True, color=['red', 'blue'], rot=0, ylabel='Count')
逻辑说明
- 透视后的
df_pivot为宽表结构,每个Type对应一行,Red、Blue分别为两列存储对应计数值,结构如下:
Color Red Blue Type A 180 30 B 340 50 C 930 70
stacked=True参数开启柱状图堆叠模式,同一行的多列数值会合并为同一根柱子展示- 主动调整列顺序+指定对应颜色,严格符合Red层在下、Blue层在上的展示要求,且两类颜色差异明确
内容的提问来源于stack exchange,提问作者Sky
相关产品推荐
相关产品推荐

