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

Python中同一子图无法显示两个箱线图问题求助

解决Seaborn子图中仅显示单个箱线图的问题

问题背景

你尝试用Seaborn和Matplotlib在1行2列的子图中,分别绘制중식계和석식계的Noise与Cluster分组箱线图,但每个子图仅显示Noise的数据。两组数据来自不同DataFrame:cluster_data有1085条중식계数据(范围0.0-1.0),noise_data有77条중식계数据(范围0.199-0.879),数据结构和范围均无异常。

问题原因

直接将两个Series组成列表传给sns.boxplot的data参数时,Seaborn的内部解析逻辑无法正确识别第二组数据的分组信息,尤其当两组数据量差异较大时,容易出现仅渲染第一个Series的情况。

解决方案

方案1:显式指定x/y参数(无需重构数据)

通过构造x轴分组标签并合并y轴数据,直接传递给boxplot的x、y参数:

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

fig, axes = plt.subplots(1, 2, figsize=(16, 8), sharey=True)

# 중식계 박스플롯
sns.boxplot(
    x=['Noise'] * len(noise_data['중식계']) + ['Cluster'] * len(cluster_data['중식계']),
    y=pd.concat([noise_data['중식계'], cluster_data['중식계']]),
    notch=True, palette="Set2", ax=axes[0]
)
axes[0].set_title('중식계 분포 : Noise vs Cluster')

# 석식계 박스플롯
sns.boxplot(
    x=['Noise'] * len(noise_data['석식계']) + ['Cluster'] * len(cluster_data['석식계']),
    y=pd.concat([noise_data['석식계'], cluster_data['석식계']]),
    notch=True, palette="Set2", ax=axes[1]
)
axes[1].set_title('석식계 분포 : Noise vs Cluster')

plt.show()

方案2:重构为长格式数据(推荐)

将两个DataFrame合并并添加分组标识,这种格式更契合Seaborn的API设计,后续扩展更灵活:

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

# 重构중식계数据集
lunch_data = pd.concat([
    noise_data[['중식계']].assign(group='Noise'),
    cluster_data[['중식계']].assign(group='Cluster')
])

# 重构석식계数据集
dinner_data = pd.concat([
    noise_data[['석식계']].assign(group='Noise'),
    cluster_data[['석식계']].assign(group='Cluster')
])

fig, axes = plt.subplots(1, 2, figsize=(16, 8), sharey=True)

# 绘制중식계箱线图
sns.boxplot(x='group', y='중식계', data=lunch_data, notch=True, palette="Set2", ax=axes[0])
axes[0].set_title('중식계 분포 : Noise vs Cluster')

# 绘制석식계箱线图
sns.boxplot(x='group', y='석식계', data=dinner_data, notch=True, palette="Set2", ax=axes[1])
axes[1].set_title('석식계 분포 : Noise vs Cluster')

plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:32:12