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

带年份维度的二元预测变量与连续响应变量分组箱线图绘制

解决方案:在同一X类别下分组展示箱线图

我懂你的需求——就是想把2015和2016年的数据放在同一个Infected类别下,用并排的箱线图做对比,对吧?其实用Seaborn的boxplot配合hue参数就能轻松搞定,不用纠结split()这类不对路的函数,下面给你一步步演示:

1. 先对齐你的DataFrame结构

假设你的数据集和你描述的一致,我先模拟一个示例结构:

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

# 模拟你的假设数据集
df = pd.DataFrame({
    '连续响应变量': [23, 19, 27, 21, 25, 18, 30, 26, 28, 22, 24, 29],
    '年份': ['2015', '2015', '2015', '2015', '2015', '2015', '2016', '2016', '2016', '2016', '2016', '2016'],
    'Infected': ['Yes'] * 12  # 你的目标X变量列,所有值归为同一类别
})

2. 绘制分组箱线图

核心就是用hue参数指定年份作为分组依据,再通过dodge=True(默认开启)让两个箱线图在同一X位置并排展示:

# 绘制箱线图
sns.boxplot(
    data=df,
    x='Infected',       # X轴固定为你的目标类别列
    y='连续响应变量',     # Y轴是你的连续响应变量
    hue='年份',          # 按年份维度分组
    dodge=True          # 开启分组箱线图的并排显示(默认就是True,可省略)
)

# 优化图表可读性
plt.title('Infected组下2015 vs 2016年响应变量对比')
plt.legend(title='年份')
plt.show()

3. 效果说明

运行这段代码后,你会在X轴的Infected标签下方看到两个并排的箱线图,分别对应2015和2016年的数据,图例也会清晰区分两组。如果你的Infected列有多个类别(比如Yes/No),这个方法同样适用——每个类别下都会自动生成对应年份的并排箱线图。

为啥split()没用?

你提到的split()是字符串分割函数,和箱线图的分组可视化逻辑完全不搭,所以用在这里解决不了问题。Seaborn的hue参数才是专门用来处理同一X类别下的分组展示的工具。

内容的提问来源于stack exchange,提问作者D. Money

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:11:59