一文掌握小提琴图的所有画法

我们平时说的小提琴图其实是箱式图与核密度图的结合,箱式图展示了分位数的位置,小提琴图则展示了任意位置的密度,小提琴图可以展示密度较高的位置。下面我们一起来看看几种绘图R包。

小提琴图是通过使用密度曲线描述一组或多组的数值数据分布。每条曲线的宽度对应于各区域数据点的近似频率。通常密度会随附一种叠加的图表类型,如箱形图,以提供一些其他的数据信息,即矩形上下边框代表第一个和第三个四分位数,中间点是中位数。
小提琴图可以用来观察数据的分布情况,也可用于比较多个组之间的分布。每个组的密度曲线的波峰、谷线和尾部可以进行比较,以确定哪些组是相似的,哪些组是不同的。
ggstatsplot

首先向大家介绍一个小编最喜欢的小提琴图绘图方法ggstatsplot包里的ggbetweenstats,绘制的是箱式图和小提琴图的组合,而且自带统计分析。目前,它支持的统计检验类型有:参数检验、非参数检验、鲁棒性检验和贝叶斯T检验/方差分析、相关分析、列联表分析和回归分析。

1. 箱式图小提琴图的组合图

install.packages("ggstatsplot")library(ggstatsplot)data(mtcars)

ggbetweenstats(  data = mtcars,  x = am,  y = mpg,  plot.type = "boxviolin",  #绘图类型,boxviolin是小提琴加箱式图  type = "parametric",  #统计类型  pairwise.annotation = "p.value",  #用于成对比较的注释字符,或"asterisk"  p.adjust.method = "holm",  #p值校正方法  notchwidth = 0.5,  #对于有缺口的箱形图,缺口相对于主体的宽度(默认为0.5)  linetype = "solid",  title = "Fuel efficiency by type of car transmission",  caption = "Transmission (0 = automatic, 1 = manual)",)

2. 小提琴图

ggbetweenstats(  data = mtcars,  x = am,  y = mpg,  plot.type = "violin",  type = "parametric",  pairwise.annotation = "p.value",  p.adjust.method = "holm",  linetype = "solid",  title = "Fuel efficiency by type of car transmission",  caption = "Transmission (0 = automatic, 1 = manual)",)

vioplot

vioplot是常用的绘制小提琴图的R包,可在一个页面直接绘制多组图,喜欢简洁风格的小伙伴可以试试这个。这里的小提琴图是箱形图和核密度图的组合。
install.packages("vioplot")library(vioplot)data("diamonds", package = "ggplot2")fix(diamonds)

palette <- RColorBrewer::brewer.pal(9, "Pastel1")par(mfrow=c(3, 1))#一个图版显示3行,1列vioplot(price ~ cut, data = diamonds, las = 2, col = palette)#根据cut分组展示price#las= 1是水平展示横坐标标签,las = 2为纵向展示vioplot(price ~ clarity, data = diamonds, las = 2, col = palette)vioplot(price ~ color, data = diamonds, las = 2, col = palette)

 

 

ggplot2
library(ggplot2)data("diamonds")ggplot(diamonds, aes(x=cut, y=price)) +geom_violin(trim=FALSE,aes(fill=factor(cut))) +  #"trim"为TRUE(默认值),将小提琴的尾部修剪到数据范围。如果为FALSE,不修剪尾部。  geom_boxplot(width=0.1,position=position_dodge(0.8))+ #绘制箱线图  theme_bw()+  #背景变为白色  theme(panel.grid.major = element_blank(),           panel.grid.minor = element_blank(),        #不显示网格线        panel.border = element_blank(),        #去除外框线        axis.line = element_line(colour = "black",size=2)        #将x轴和y轴加粗显示        )

2.

library(hrbrthemes)#ggplot2的主题和相关组件包library(viridis) #是Matplotlib的新默认颜色映射ggplot(diamonds, aes(x=cut, y=price)) +  geom_violin(trim=FALSE,aes(fill=factor(cut)),) +  #geom_boxplot(width=0.1,position=position_dodge(0.8))+ #绘制箱线图  scale_fill_viridis(discrete=TRUE) + #生成一个离散的调色板  theme_ipsum() +  #使用Arial Narrow字体  theme(    legend.position="none" #不加图例  ) +  coord_flip() #翻转坐标

 

ggnormalviolin

ggnormalviolin是使用ggplot2根据指定的均值和标准差创建正态分布的小提琴图的方法,这个函数可以用来表示假设的正态分布和置信区间。
install.packages("ggnormalviolin")library(ggplot2)library(ggnormalviolin)library(ggthemes) #图形背景主题包#建一个用于绘图的数据框
d <- data.frame(  Distribution = c("A", "B"),  Distribution_mean = c(80, 90),  Distribution_sd = c(15, 10))d

ggplot(data = d, aes(x = Distribution)) +  geom_normalviolin(aes(mu = Distribution_mean,         #mu是正态分布的均值                        sigma = Distribution_sd),         #sigma是正态分布的标准差         width=0.5,         #小提琴图的宽         color="black",         #小提琴图外框线的颜色         size=2,         #小提琴图外框线的粗细         linetype=2,         #小提琴图外框线的类型         fill="yellow"         #fill=c("yellow","red")         #小提琴图内部填充的颜色                    )+         theme_wsj() #换主题

ggpubr

1.小提琴加箱式图

install.packages("ggpubr")library(ggpubr)data("ToothGrowth")df <- ToothGrowthggviolin(df, "dose", "len", color = "dose",         palette = c("#00AFBB", "#E7B800", "#FC4E07"), #颜色         add = "boxplot"#小提琴加箱式图)

2.小提琴加散点图

ggviolin(df, "dose", "len", color = "dose",         palette = c("#00AFBB", "#E7B800", "#FC4E07"),         add = "dotplot"#小提琴加散点图)

3. 多组比较

ggviolin(df, "dose", "len", color = "supp",         palette = c("#00AFBB", "#E7B800"), add = "boxplot")

小编总结
写文章时,对样本的分布进行展示和统计分析,小提琴图都是个不错的选择,而且简单易绘制,大家可以借鉴哦~
统计与绘图

使用小提琴图或者密度分布图代替箱图展示结果

2020-8-28 4:25:26

统计与绘图

一网打尽所有的比较型统计分析和可视化

2020-8-28 4:29:37

加入Q群
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索