半小提琴图 半箱线图
时间: 2025-01-22 16:32:06 浏览: 103
### 使用半小提琴图与半箱线图进行数据分析可视化
在数据科学领域,组合图表可以提供更为丰富的信息展示方式。对于特定的数据集来说,半小提琴图和半箱线图能够有效地结合两者的优势,在同一张图表上既展现整体分布又突出异常值情况。
#### 半小提琴图与半箱线图的特点
半小提琴图通过密度估计展示了数值型变量在整个范围内的概率密度分布状况;而半箱线图则清晰地标记出了上下四分位数以及可能存在的离群点位置。当这两种图形被合并在一张图片里时,便形成了所谓的“半小提琴加半箱线”的复合形式[^1]。
#### 实现方法
为了实现这种类型的图表,可以通过`seaborn`库中的`violinplot()`函数配合自定义参数完成一半的小提琴部分绘制工作,再利用`boxplot()`在同一坐标轴下叠加另一半作为箱形区域显示[^4]。
下面是一个具体的例子:
```python
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 创建样本数据框
np.random.seed(0)
data = pd.DataFrame({
'value': np.concatenate([np.random.normal(0, 1, 100),
np.random.normal(5, 1, 100)]),
'group': ['A']*100 + ['B']*100})
plt.figure(figsize=(8,6))
# 绘制左侧的半个小提琴图
sns.violinplot(x="group", y="value", data=data,
inner=None, cut=0, scale='count', bw=.2)
# 添加右侧的半个箱线图
ax = sns.boxplot(x="group", y="value", data=data,
showcaps=False, boxprops={'facecolor':'None'},
showfliers=True, whiskerprops={'linewidth':0},
saturation=1, width=.3, flierprops={"marker":"o"},
medianprops=dict(color="red"))
for i in ["left", "right"]:
ax.spines[i].set_visible(False)
plt.title('Semi-Violin and Semi-Box Plot')
plt.show()
```
这段代码首先生成了一组双峰分布的数据用于测试目的,接着分别调用了`seaborn`里的两个绘图功能——先画出不带内部结构(即无须显示均值、中位数等细节)且截断于零处的小提琴轮廓;随后在同一位置覆盖上了透明背景颜色并隐藏掉顶部底部线条的简化版箱体图案,最后调整了一些外观属性使其看起来更像是传统意义上的“半边”。
阅读全文
相关推荐
















