小提琴图类似于箱式图,不同之处在于它们还显示了数据的概率密度。通常,小提琴图也包括数据中位数和四分位数范围等箱式图的内容 。函数geom_violin()用于生成小提琴图。
1. 准备数据使用R自带的ToothGrowth数据集:
# 将剂量(dose)从数值变量变成因子变量data(ToothGrowth)ToothGrowth$doseas.factor(ToothGrowth$dose)head(ToothGrowth)
输出结果:
len supp dose1 4.2 VC 0.52 11.5 VC 0.53 7.3 VC 0.5 4 5.8 VC 0.55 6.4 VC 0.56 10.0 VC 0.5
请确保使用上述R脚本将变量剂量转换为因子变量。
2. 简单的小提琴图library(ggplot2)p<-ggplot(ToothGrowth, aes(x=dose, y=len))+geom_violin()p# 图形翻转p+coord_flip()# 将修剪trim参数设置为FALSEggplot(ToothGrowth, aes(x=dose, y=len))+geom_violin(trim=FALSE)
请注意,默认情况下trim = TRUE。在这种情况下,小提琴的尾巴会被修剪。如果为FALSE,将不会修剪尾巴。
选择要显示的项目:
p+scale_x_discrete(limits=c("0.5", "2"))
stat_summary()函数可用于在小提琴图上添加均值/中点和更多内容。
3.1 添加平均值和中位数
# 添加均值p+stat_summary(fun=mean, geom="point", shape=23, size=2)# 添加中位数p+stat_summary(fun=median, geom="point", size=2, color="red")