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

如何在同一画布中展示类别单独与整体箱线图并对齐坐标轴

实现类别+整体时间点的双箱线图布局

需求说明

需要绘制两组箱线图并实现共用X轴的对比布局:

  • 上方:9个类别分别对应T1、T2两个时间点的横向箱线图,使用自定义类别排序
  • 下方:展示T1、T2整体数据的横向箱线图

错误分析

你之前的子图代码出现语法错误,是因为给sns.boxplot的参数额外包裹了一层括号,正确写法应直接传递参数,无需外层括号。另外注意原DataFrame中T1、T2列是字符串类型,必须先转为数值型才能正确绘制箱线图。

完整实现代码

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

# 1. 创建DataFrame并转换数值类型
data = {'Category':  ['waschen','anziehen','lesen', 'putzen', 'zahnpflege', 'essen', 'hobby', 'schlafen', 'spazieren', 'waschen',
                      'anziehen','lesen', 'putzen', 'zahnpflege', 'essen', 'hobby', 'schlafen', 'spazieren'],
        'T1': ['1', '6', '5','8', '4', '7', '5', '7', '1', '7', '3', '2', '1', '4', '7', '5', '7', '1'],
        'T2':['3', '7', '7','9', '8', '10', '8', '9', '3', '10', '9', '5', '3', '8', '9', '6', '7', '5']}

df = pd.DataFrame(data)
# 将T1、T2转为数值型,确保箱线图统计量计算正确
df['T1'] = df['T1'].astype(int)
df['T2'] = df['T2'].astype(int)

# 2. 创建上下布局的子图,启用X轴共用
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(10, 8), sharex=True)

# 3. 绘制上方类别分组箱线图
category_order = ['waschen', 'anziehen', 'zahnpflege', 'putzen', 'schlafen', 'essen', 'lesen', 'hobby', 'spazieren']
melted_df = df.melt(id_vars='Category', var_name='variable', value_name='value')
sns.boxplot(y='Category', x='value', hue='variable', 
            data=melted_df,
            palette='Blues',
            order=category_order,
            ax=ax1)
ax1.set_title('各类别T1/T2数据对比')
ax1.legend(title='时间点')

# 4. 绘制下方整体时间点箱线图
overall_melted = df.melt(var_name='variable', value_name='value')
sns.boxplot(x='value', y='variable',
            data=overall_melted,
            palette='Reds',
            ax=ax2)
ax2.set_title('T1/T2整体数据对比')

# 调整子图间距,避免标题与图表重叠
plt.tight_layout()
plt.show()

关键说明

  • 数值类型转换:原数据中T1、T2为字符串格式,必须转为数值型才能让箱线图正确计算中位数、四分位数等统计量
  • 子图参数:sharex=True确保两个子图共用X轴刻度,实现精准对齐对比
  • 轴绑定:通过ax参数将每个sns.boxplot指定到对应子图,避免语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 00:57:29