You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas pivot_table实现带重叠与分组的柱状图

使用Pandas + Python实现分组柱状图

没问题,我来帮你搞定这个分组柱状图的实现!咱们一步步来,确保每个环节都贴合你的需求:

首先得把必要的库导进来,Pandas用来处理CSV数据,Matplotlib负责绘图(Pandas的plot底层也是调用Matplotlib,所以得一起安装好):

import pandas as pd
import matplotlib.pyplot as plt

接下来读取你的CSV文件到DataFrame里,假设你的文件名叫data.csv,如果路径不在当前目录,记得加上完整路径:

df = pd.read_csv('data.csv')

然后咱们按照你的要求,给每个类别定义对应的颜色——A是浅灰色、B是最浅蓝色,我后续补了渐变的蓝色系(你要是有更精准的颜色需求,直接替换十六进制色值就行):

color_map = {
    'A': '#d3d3d3',  # 浅灰色
    'B': '#add8e6',  # 最浅蓝色
    'C': '#87ceeb',  # 淡蓝色
    'D': '#4682b4',  # 钢蓝色
    'E': '#1e90ff'   # 深蓝色
}

接下来就是核心的绘图环节了。假设你的两个CO开头的列是CO_metric1和CO_metric2,咱们直接用Pandas的plot.bar()生成分组柱状图,同时绑定好颜色:

# 先过滤出category列是A-E的行(如果CSV里有其他无关类别,这一步能帮你筛掉)
filtered_df = df[df['category'].isin(['A', 'B', 'C', 'D', 'E'])]

# 给图表整个好看点的风格,默认的太朴素了
plt.style.use('seaborn-v0_8')

# 绘制分组柱状图:x轴是类别,y轴是两个CO指标,每个类别对应两个柱子
ax = filtered_df.plot(
    x='category',
    y=['CO_metric1', 'CO_metric2'],  # 这里替换成你CSV里实际的CO开头列名
    kind='bar',
    color=[color_map[cat] for cat in filtered_df['category'].unique()],
    figsize=(10, 6),  # 设置图表大小
    rot=0  # x轴类别标签保持水平,不旋转
)

# 给图表加些标注,让别人一眼看懂
ax.set_title('按类别分组的CO指标柱状图', fontsize=14)
ax.set_xlabel('类别', fontsize=12)
ax.set_ylabel('数值', fontsize=12)

# 自定义图例名称,替换成你两个CO列的实际含义
ax.legend(['CO指标1', 'CO指标2'], loc='upper right')

# 自动调整布局,避免标签被截断
plt.tight_layout()
# 显示图表
plt.show()

最后提几个小细节:

  • 一定要把代码里的CO_metric1和CO_metric2换成你CSV里真实的列名
  • 如果你的CSV里category列只有A-E,那filtered_df这一步可以省略,直接用原df就行
  • 颜色值可以用系统自带的取色工具或者在线取色器获取,替换color_map里的十六进制值就能精准匹配你附图的颜色

内容的提问来源于stack exchange,提问作者BoroBorooooooooooooooooooooooo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:38:43