本文学习绘制简单小提琴图,包括介绍和绘图两部分,主要用到ggplot2包的geom_violin函数。
小提琴图是一种展示数据分布情况和数据统计信息的重要工具,能够看出数据的最大值、最小值、中位数、四分位数、分布密度、离群值等信息,它和箱线图比较类似。小提琴图怎么看?
从上往下看,依次为:
- 离群点:表示超出范围的值
- 上边界:数据的上界
- 四分位:箱线图的箱子和小提琴图中央的黑色竖直线,都表示四分位的范围
- 中心点;箱线图的箱子中央横线,小提琴图中间的点,表示中值。
绘图前准备工作
加载R包
library(ggplot2) library(reshape2)
ggplot2包用于绘图,reshape2用于对数据矩阵进行处理,这两个R包很脸熟,未来可能经常会用到,推荐添加进配置文件自动载入。
载入数据
示例数据包含两列(第一列为分组信息,第二列为值),A组有7条数据,B组和C组有9个。这种数据就是用于ggplot绘图的标准格式,可以直接用于绘图。
> head(long_table) Grp Value 1 GrpA 10 2 GrpA 11 3 GrpA 11 4 GrpA 11 5 GrpA 12 6 GrpA 11
绘制小提琴图
绘图使用ggplot函数,依次进行:设置数据文件、初始化坐标轴、绘制小提琴图geom_violin、设置x轴标签显示方式、调整图例摆放位置,然后输入p生成plot。
p <- ggplot(long_table,aes(x=Grp,y=Value)) + geom_violin(aes(fill <- factor(Grp))) + theme(axis.text.x=element_text(angle=45,hjust=1,vjust=1)) + theme(legend.position="top") p
绘图结果:
给小提琴图添加一些参数修饰,显示出中位数的点,用红色表示。
stat_summary(fun = median, geom="point",fill="red", shape=21,size=3)
小提琴图的上下端表示最值,看起来不太平滑,可以使用trim参数进行修改。能使结果图的上下端自动变得尖锐美观。
p <- p+ geom_violin(trim=F)
上面的内容是绘制小提琴图,为了进行对比,捎带学习一下简单的箱线图绘制方法。
绘制箱线图
在原始数据的基础上,利用rep生成一列新变量gender,然后利用geom_boxplot绘制箱线图,填充的内容的刚刚生成的gender(包含两水平的因子数据)
a <- c(rep(c('f',"m"),12),'f') #rep输出复制字符若干次 long_table$gender <- a # 上面的代码用于添加一个新变量gender(包含f和m两个子项) p <- ggplot(long_table,aes(x=Grp,y=Value)) + geom_boxplot(aes(fill=factor(gender))) p
绘图结果:
笔者总结
- 绘图时每一步最好进行记录,以免返工时忘了曾经做了啥
- 原始数据保存好!
- 小提琴图有时比较奇怪,有可能是数据本身分布不均导致
- 图像主题参数太多,不宜挨个学习,宜遇上哪个学哪个
参考资料 :
1.https://www.jianshu.com/p/cd5b265ca11f
2.http://www.ehbio.com/Bioinfo_R_course
数据和代码参考生信宝典进行学习,后台私聊免费分享
END
© 素材来源于网络,侵权请联系后台删除
往期推荐: