ggplot2入门 学习笔记| 小提琴图怎么画?

简介: ggplot2入门 学习笔记| 小提琴图怎么画?

本文学习绘制简单小提琴图,包括介绍和绘图两部分,主要用到ggplot2包的geom_violin函数。

640.png

小提琴图是一种展示数据分布情况和数据统计信息的重要工具,能够看出数据的最大值、最小值、中位数、四分位数、分布密度、离群值等信息,它和箱线图比较类似。小提琴图怎么看?

640.png

从上往下看,依次为:

  • 离群点:表示超出范围的值
  • 上边界:数据的上界
  • 四分位:箱线图的箱子和小提琴图中央的黑色竖直线,都表示四分位的范围
  • 中心点;箱线图的箱子中央横线,小提琴图中间的点,表示中值。

绘图前准备工作

加载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

640.png

绘制小提琴图

绘图使用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

绘图结果:

640.png

给小提琴图添加一些参数修饰,显示出中位数的点,用红色表示。

stat_summary(fun = median,
   geom="point",fill="red",
   shape=21,size=3)

640.png

小提琴图的上下端表示最值,看起来不太平滑,可以使用trim参数进行修改。能使结果图的上下端自动变得尖锐美观。

p <- p+ geom_violin(trim=F)

640.png

上面的内容是绘制小提琴图,为了进行对比,捎带学习一下简单的箱线图绘制方法。

绘制箱线图

在原始数据的基础上,利用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

绘图结果:


640.png

笔者总结

  1. 绘图时每一步最好进行记录,以免返工时忘了曾经做了啥
  2. 原始数据保存好!
  3. 小提琴图有时比较奇怪,有可能是数据本身分布不均导致
  4. 图像主题参数太多,不宜挨个学习,宜遇上哪个学哪个

参考资料 :

1.https://www.jianshu.com/p/cd5b265ca11f

2.http://www.ehbio.com/Bioinfo_R_course

数据和代码参考生信宝典进行学习,后台私聊免费分享

END

© 素材来源于网络,侵权请联系后台删除

往期推荐:

文献丨群体转录组分析锁定关键转录因子

文献丨转录组RNA seq——青年阶段!

笔记丨ggplot2热图入门学习笔记

笔记丨PCA分析基本知识和数学原理

相关文章
|
6月前
r语言ggplot2误差棒图快速指南
r语言ggplot2误差棒图快速指南
|
数据格式
如何绘制热图?ggplot2入门笔记
如何绘制热图?ggplot2入门笔记
|
数据可视化 数据挖掘 Python
跟着Nature学作图:R语言ggplot2作图展示基因和转座子的相对位置
跟着Nature学作图:R语言ggplot2作图展示基因和转座子的相对位置
|
6月前
|
存储 数据可视化
使用 plotly 绘制旭日图
使用 plotly 绘制旭日图
303 0
|
数据挖掘
R实战 | 环状热图(circos)
R实战 | 环状热图(circos)
333 0
|
编解码 数据可视化 数据挖掘
R语言之 ggplot 2 和其他图形
R语言之 ggplot 2 和其他图形
97 0
如何用ggplot2绘制基因功能富集气泡图?
如何用ggplot2绘制基因功能富集气泡图?
|
人工智能 搜索推荐 数据处理
ggplot2|玩转Manhattan图-你有被要求这么画吗?
ggplot2|玩转Manhattan图-你有被要求这么画吗?
246 0
ggplot2-plotly|让你的火山图“活”过来
ggplot2-plotly|让你的火山图“活”过来
123 0
|
数据挖掘 数据处理 索引
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下
752 0