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

如何基于6个地区DataFrame绘制分组多条形图?

解决方法

1. 先统一整合所有地区数据

首先给每个地区的DataFrame添加地区标识列,再合并成完整数据集,这是跨地区绘图的核心前提:

import pandas as pd

# 为各地区数据添加地区标签
df_asia['region'] = '亚洲'
df_africa['region'] = '非洲'
df_europe['region'] = '欧洲'
df_america['region'] = '美洲'
df_latin_america['region'] = '拉丁美洲'
df_middle_east['region'] = '中东'

# 合并所有地区数据
df_all = pd.concat([df_asia, df_africa, df_europe, df_america, df_latin_america, df_middle_east], ignore_index=True)

2. 用Seaborn快速绘制分组条形图(两种展示方式)

方式一:同一画布内按地区分组,组内展示事件类型

适合同时对比地区间、地区内的事件数量差异:

import seaborn as sns
import matplotlib.pyplot as plt

plt.figure(figsize=(15, 8))
# x轴为地区,hue区分事件类型,绘制分组条形
sns.barplot(data=df_all, x='region', y='counts', hue='events')

plt.title('各地区不同事件类型数量对比')
plt.xlabel('地区')
plt.ylabel('事件数量')
# 将图例移至画布外侧,避免遮挡条形
plt.legend(title='事件类型', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

方式二:每个地区单独子图,聚焦单一地区事件分布

如果同一画布过于拥挤,用子图分开展示:

# 创建子图网格,每个子图对应一个地区,col_wrap控制每行显示的子图数量
g = sns.catplot(data=df_all, x='events', y='counts', col='region', kind='bar', col_wrap=3, figsize=(18, 10))

# 统一设置子图标题和坐标轴标签
g.set_titles('{col_name} 事件类型数量')
g.set_xlabels('事件类型')
g.set_ylabels('事件数量')
plt.tight_layout()
plt.show()

3. 用Matplotlib手动实现(自定义细节更灵活)

如果需要精细调整条形宽度、颜色、位置等,可手动绘制:

import matplotlib.pyplot as plt
import numpy as np

# 获取所有唯一的地区和事件类型
regions = df_all['region'].unique()
events = df_all['events'].unique()
n_regions = len(regions)
n_events = len(events)

# 设置单个条形的宽度
bar_width = 0.8 / n_events

plt.figure(figsize=(16, 9))

# 遍历每个地区,绘制该地区下的所有事件条形
for i, region in enumerate(regions):
    region_data = df_all[df_all['region'] == region]
    # 计算当前地区所有条形的x轴位置
    x_pos = np.arange(n_events) + i * bar_width
    plt.bar(x_pos, region_data['counts'], width=bar_width, label=region)

# 设置x轴刻度为事件类型,对齐分组中心
plt.xticks(np.arange(n_events) + bar_width * (n_regions - 1)/2, events)
plt.title('各地区事件类型数量对比')
plt.xlabel('事件类型')
plt.ylabel('事件数量')
plt.legend(title='地区')
plt.tight_layout()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:13:08