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

如何合并多个DataFrame绘制分组条形图 代码运行错误排查

问题原因与修正方案

错误点梳理

  • 绘图x轴字段配置错误:原代码将Cat作为x轴分组维度,与需求的「按Area分组,组内拆分Cat类别」逻辑相反
  • 绘图方法选择错误:pandas内置的plot.bar默认不支持按指定字段自动拆分组内次级分类,你要实现的分组条形图直接使用seaborn的barplot方法即可,通过hue参数指定组内拆分的分类字段

修正后可运行代码

import sys
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from matplotlib import rcParams

test_dict1 = {'item1':4, 'item2':6, 'item3':7,'item4':8,'item5':10}
test_dict2 = {'item1':4, 'item2':6, 'item3':7,'item7':8,'item6':10}

test1_df = pd.DataFrame(test_dict1.items(), columns=['Area','Number'])
test2_df = pd.DataFrame(test_dict2.items(), columns=['Area','Number'])

test1_df['Cat'] = 'Cat1'
test2_df['Cat'] = 'Cat2'

dfs = [test1_df,test2_df]
result = pd.concat(dfs)

sns.set(style="whitegrid")
rcParams.update({'figure.autolayout': True})
fig, ax1 = plt.subplots(figsize=(12,6))

# 核心修改点:使用seaborn的barplot,指定x为Area,hue为Cat拆分组内条形
sns.barplot(x='Area', y='Number', hue='Cat', data=result, ax=ax1)

plt.tight_layout()
plt.xticks(rotation=45, ha="right")
plt.show()

效果说明

运行上述代码后会自动生成7组条形,对应item1到item7共7个Area取值,每组内的两个条形分别对应Cat1、Cat2的Number数值,缺失值对应的位置不会绘制条形,完全符合预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:06:03