【Seaborn】sns.violinplot() 函数:小提琴图

sns.violinplot() —— 小提琴图(Violin Plot)

seaborn.violinplot() 用于可视化数据分布的密度,结合了 箱线图(Box Plot)和 KDE 密度估计,适用于 数据分布分析、对比不同类别的分布情况


1. 语法

import seaborn as sns

sns.violinplot(data=None, x=None, y=None, hue=None, order=None, split=False, palette=None, orient=None, inner="box")

主要参数

参数作用
dataDataFrame 数据集
x分类变量
y数值变量
hue按类别分色
order自定义类别顺序
splitTrue:将 hue 类别合并显示
palette颜色方案(如 "Blues""pastel"
orient'v' 竖向(默认) 或 'h' 横向
inner'box'(默认)显示箱线图,'point' 显示数据点

2. 什么是小提琴图?

小提琴图(Violin Plot)结合了箱线图(Box Plot)和 KDE 密度估计

  • 宽度表示数据密度(比箱线图更直观)。
  • 中间的线中位数
  • 默认包含箱线图,可选 inner="point" 仅显示数据点。

3. 基本示例

3.1 画小提琴图

import seaborn as sns
import matplotlib.pyplot as plt

# 加载数据
data = sns.load_dataset("titanic")

# 绘制小提琴图
sns.violinplot(data=data, x="class", y="age")

plt.title("Age Distribution by Class")
plt.show()

📌 说明

  • x="class"分类变量(头等舱/二等舱/三等舱)。
  • y="age"年龄分布密度(比 boxplot 更直观)。
    在这里插入图片描述

3.2 按类别分色(hue 参数)

sns.violinplot(data=data, x="class", y="age", hue="sex")

plt.show()

📌 作用

  • hue="sex"不同性别用不同颜色表示
    在这里插入图片描述

3.3 合并 hue 类别(split=True

sns.violinplot(data=data, x="class", y="age", hue="sex", split=True)

plt.show()

📌 作用

  • split=True合并男女数据,使对比更直观
    在这里插入图片描述

4. 调整美观

4.1 横向小提琴图(orient="h"

sns.violinplot(data=data, x="age", y="class", orient="h")

plt.show()

📌 作用

  • orient="h"横向小提琴图(适用于类别较长时)。
    在这里插入图片描述

4.2 只显示数据点(inner="point"

sns.violinplot(data=data, x="class", y="age", inner="point")

plt.show()

📌 作用

  • inner="point"显示数据点,而不显示箱线图
    在这里插入图片描述

4.3 设置颜色(palette

sns.violinplot(data=data, x="class", y="age", hue="sex", palette="pastel")

plt.show()

📌 可选调色板

  • "pastel""Blues""coolwarm""magma"
    在这里插入图片描述

5. sns.violinplot() vs sns.boxplot()

sns.violinplot()sns.boxplot()
作用显示数据分布密度显示中位数、四分位数、异常值
适用场景观察数据分布检测异常值
是否有密度信息没有
sns.boxplot(data=data, x="class", y="age", hue="sex")

plt.show()

在这里插入图片描述


6. 总结

sns.violinplot() 适用于数据分布可视化,分析密度
常见参数

  • hue 按类别分色,split=True 合并对比inner="point" 显示数据点
  • orient="h" 横向小提琴图palette="pastel" 调整颜色
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值