三组的箱式图应该分开
时间: 2024-09-28 07:16:47 浏览: 28
如果你想将三组箱线图分开显示,你可以将它们分别画在三个独立的子图中,每个子图代表一组数据。下面是一个例子,假设每组数据在一个单独的数据框中:
```python
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
# 假设有三个数据框,分别对应三组数据
group_1_df = pd.DataFrame({
'Median': [0.5, 0.81, 0.78],
'CI_Lower': [0, 0.33, 0.20],
'CI_Upper': [1, 1, 1]
}, columns=['Median', 'CI_Lower', 'CI_Upper'], index=['Model I', 'Model II', 'Model III'])
group_2_df = pd.DataFrame({
'Median': [0.71, 0.91, 0.95],
'CI_Lower': [0.53, 0.78, 0.84],
'CI_Upper': [0.88, 1, 1]
}, columns=['Median', 'CI_Lower', 'CI_Upper'], index=['Model I', 'Model II', 'Model III'])
group_3_df = pd.DataFrame({
'Median': [0.69, 0.85, 0.91],
'CI_Lower': [0.53, 0.70, 0.81],
'CI_Upper': [0.84, 0.96, 0.99]
}, columns=['Median', 'CI_Lower', 'CI_Upper'], index=['Model I', 'Model II', 'Model III'])
# 对每个数据框画箱线图
fig, axs = plt.subplots(1, 3, figsize=(15, 5))
sns.boxplot(data=group_1_df, ax=axs[0], orient="h", palette=['blue'], fliersize=0) # 第一组
sns.boxplot(data=group_2_df, ax=axs[1], orient="h", palette=['green'], fliersize=0) # 第二组
sns.boxplot(data=group_3_df, ax=axs[2], orient="h", palette=['red'], fliersize=0) # 第三组
# 调整子图间距
plt.tight_layout()
# 显示图表
plt.show()
```
在这个例子中,`subplots`函数创建了一个包含三个子图的网格布局,每个子图对应一个数据框。每个箱线图都是水平方向,且颜色根据组别区分。这样可以清晰地分开并展示每一组的数据分布。
阅读全文