python箱线图和小提琴图结合
时间: 2025-06-22 15:43:08 浏览: 9
### 如何在 Python 中同时绘制箱线图和小提琴图
为了在同一图表上展示箱线图和小提琴图,可以利用 `seaborn` 库中的功能来实现这一目标。下面是一个完整的例子,展示了如何使用 Seaborn 和 Matplotlib 来创建这样的组合图形。
#### 导入必要的库并设置字体样式
首先需要导入所需的库,并配置绘图环境以便支持中文显示[^2]:
```python
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
plt.rc("font", family="SimHei", size="15") # 解决中文乱码问题
sns.set_style("whitegrid") # 设置背景网格风格
```
#### 加载数据集
接着加载用于可视化的数据集,在这里选用的是 diamonds 数据集作为示例[^3]:
```python
dia = sns.load_dataset("diamonds")
```
#### 绘制组合图
通过调用 `violinplot()` 方法先绘制小提琴图,再在其基础上叠加箱线图以提供更丰富的统计信息[^4]:
```python
fig, ax = plt.subplots(figsize=(10, 8))
# 小提琴图部分
sns.violinplot(x='cut', y='price', data=dia, inner=None, palette="muted", bw=.2, cut=1, linewidth=1)
# 叠加箱线图
sns.boxplot(x='cut', y='price', data=dia, width=0.15, showcaps=False,
boxprops={'facecolor': 'None'}, whiskerprops={'linewidth': 0},
saturation=1, medianprops={"color": "red"}, flierprops=dict(marker='o'))
ax.set_title('钻石价格按切割等级分布的小提琴图与箱线图')
ax.set_xlabel('切割水平')
ax.set_ylabel('价格')
plt.show()
```
这段代码实现了在一个坐标系内既能看到整体的数据密度分布情况(由小提琴图表示),又能观察到具体统计数据如四分位数等重要指标(由箱线图体现)。这种组合方式有助于更加全面地理解不同类别的数据特性。
阅读全文
相关推荐


















