小提琴图(Violin Plot)是一种数据可视化图表,它结合了箱线图和核密度图的特点,用于展示数据分布和概率密度。小提琴图通常用于比较多个组或类别之间的数据分布,以及观察单个变量的分布情况。
以下是小提琴图的主要组成部分和特点:
小提琴形状: 小提琴图的主体部分是一组垂直排列的“小提琴”形状,每个小提琴代表一个数据组或类别。小提琴的宽度反映了数据在该位置的密度,较宽的部分表示更多的数据点。
箱线图: 每个小提琴图的中间部分通常包含一个箱线图,用于显示数据的中位数、四分位数和可能的异常值。这有助于了解数据的集中趋势和离散程度。
核密度估计曲线: 小提琴图的两侧是核密度估计曲线,用于展示数据分布的概率密度。这些曲线帮助观察数据的整体形状,并识别可能存在的多个峰值。
数据点: 有时,小提琴图上会显示实际数据点,以更清晰地表示个别数据值。
小提琴图适用于以下情况:
比较分布: 可以用小提琴图比较多个组或类别之间的数据分布,以识别差异或相似性。
观察整体形状: 核密度估计曲线有助于观察数据的整体形状,识别分布的模式和趋势。
检测离群值: 箱线图部分可以帮助检测可能的异常值。
小提琴图在数据分析和可视化中广泛应用,特别是在统计学和数据科学领域,以提供对数据分布和变异性的更全面的理解。
示例
ggplot(iris, aes(Species, Sepal.Length)) +
geom_violin(aes(fill = Species)) +
geom_boxplot(width = 0.1) +
geom_point(size = 0.5,
position = position_jitter(width = 0.15)) +
geom_signif(comparisons = list(c("setosa", "versicolor"),
c("versicolor", "virginica")),
map_signif_level = T,
y_position = c(7.3, 8.2)) +
scale_fill_npg() +
xlab('') +
theme_classic()
解释各部分:
ggplot(iris, aes(Species, Sepal.Length))
: 创建一个ggplot
对象,指定数据集为iris
,x轴为Species
,y轴为Sepal.Length
。geom_violin(aes(fill = Species))
: 添加小提琴图,按照Species
进行填充色彩。geom_boxplot(width = 0.1)
: 添加箱线图,用于显示数据的中位数、四分位数和可能的异常值。geom_point(size = 0.5, position = position_jitter(width = 0.15))
: 添加散点图,使用抖动(jitter)来避免点的重叠。geom_signif(comparisons = list(c("setosa", "versicolor"), c("versicolor", "virginica")), map_signif_level = T, y_position = c(7.3, 8.2))
: 添加统计学显著性标记,比较setosa和versicolor以及versicolor和virginica。y_position
参数设置标记的位置。scale_fill_npg()
: 设置填充颜色的调色板,这里使用了NPG(Nature Publishing Group)样式,具体样式可以根据需要更改。xlab('')
: 将x轴标签设为空。theme_classic()
: 使用经典的主题风格。
这段代码综合使用了小提琴图、箱线图和散点图,通过可视化展示鸢尾花不同种类的萼片长度分布,同时添加了统计学显著性标记以强调差异。