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

如何在Pandas中绘制将列与type组合为X轴的定制化柱状图?

当然可以实现这种样式的柱状图!

这种需求本质是把数据从宽格式转换为长格式,再通过自定义标签和分组来实现你想要的X轴与图例效果。我用Python的pandas和seaborn(也可以用matplotlib)给你写个完整的实现示例:

步骤1:构造并处理数据

首先还原你的DataFrame(注意我去掉了type列的多余引号,实际使用时根据你的原始数据调整即可):

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

# 构造你的目标DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [2, 3, 4],
    'C': [3, 4, 5],
    'type': ['house', 'dog', 'mom']
})

步骤2:重塑数据格式

用pd.melt()把宽格式转成长格式,让每个A/B/C和type的组合都成为单独的行,同时生成你需要的自定义X轴标签:

# 重塑数据,保留type作为分组标识,把A/B/C列转成变量列
melted_df = df.melt(id_vars='type', var_name='column', value_name='value')
# 生成自定义X轴标签:格式为 列名(type)
melted_df['x_label'] = melted_df.apply(lambda row: f"{row['column']}({row['type']})", axis=1)

步骤3:绘制目标柱状图

用seaborn.barplot,通过hue参数指定type作为图例分类,X轴直接使用我们生成的自定义标签:

plt.figure(figsize=(12, 6))
# 绘制柱状图,hue参数让type成为图例区分项
sns.barplot(data=melted_df, x='x_label', y='value', hue='type')

# 调整X轴刻度角度,避免文字重叠
plt.xticks(rotation=45, ha='right')
# 设置图表标题与轴标签
plt.title('Custom Grouped Bar Chart')
plt.xlabel('Column & Type')
plt.ylabel('Value')
# 调整图例位置与标题
plt.legend(title='Type')

plt.tight_layout()
plt.show()

效果说明

  • X轴会严格按照你想要的顺序显示:A(house)、A(dog)、A(mom)、B(house)、B(dog)、B(mom)、C(house)、C(dog)、C(mom)
  • 图例自动对应house、dog、mom三种类型,不同类型的柱子会用不同颜色区分
  • 如果想用纯matplotlib实现,逻辑类似:先按分组整理数据,然后循环绘制每组柱子,手动设置标签和图例即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:02:46