写在前面:
定义:Violin plot,和Boxplot(箱线图)一样,也是一种用作显示一组数据分散情况资料的统计图,其形状类似小提琴。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。
解读:
小提琴图是【箱线图】与【核密度图】的结合,箱线图展示了分位数的位置,核密度图则展示了任意位置的密度,通过小提琴图可以知道哪些位置的数据点聚集的较多,因其形似小提琴而得名。如下图所示,其外围的曲线宽度代表数据点分布的密度,中间的箱线图则和普通箱线图表征的意义是一样的,代表着中位数、上下分位数、极差等。
与普通箱线图相比,小提琴图更能反应数据整体的分布情况(密度变化)
四分位间距:就是你数据整体(从小到大)分为四份,这样你就有三个四分位数(Quartile)了,第三四分位数➖第一四分位数的差值就是四分位间距(InterQuartile Range, IQR),简称四分位距。他的特点是不收 极大值或者是极小值的影响,常用于描述非正态分布资料的离散程度,数值越大,其变异度越大,反之,变异度越小。理论上,IQR可以是任何正值。
数据准备:
R代码:
install.packages("ggplot2")
install.packages("ggpubr")
library(ggpubr)
#读取
rt <- read.delim("input.txt")
#更改X轴顺序
rt$Stage <- factor(rt$Stage, levels = c("Stage I" , "Stage II" , "Stage III", "Stage IV"))
unique(rt$Stage)
#作图
p <- ggviolin(rt,
x="Stage", #x轴内容
y="SEMA3A", #y轴内容
fill = "Stage",
width = 1, #小提琴图的宽度
add = "boxplot",
add.params = list(fill="white"))+
stat_compare_means(method = "wilcox.test", #t.test wilcox.test anova kruskal.test
comparisons = list(c("Stage I" , "Stage II"),
c("Stage I", "Stage III"),
c("Stage I" , "Stage IV"),
c("Stage II", "Stage III"),
c("Stage II", "Stage IV"),
c("Stage III", "Stage IV")))+
labs(x = "", y = "Expression of SEMA3A")+
theme(legend.position = "none")
p
#将图片分别保存为pdf和png格式
ggsave("小提琴图1.pdf",p,width = 6,height = 4.5)
ggsave("小提琴图1.png",p,width = 6,height = 4.5)