前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跟着Nature学作图:R语言ggplot2箱线图、小提琴图、抖动散点图

跟着Nature学作图:R语言ggplot2箱线图、小提琴图、抖动散点图

作者头像
用户7010445
发布2022-05-23 15:52:07
3.2K0
发布2022-05-23 15:52:07
举报

论文是

Environmental factors shaping the gut microbiome in a Dutch population

数据和代码的github主页链接

https://github.com/GRONINGEN-MICROBIOME-CENTRE/DMP

这个也是数据代码的下载链接,可以看目录结构

https://zenodo.org/record/5910709#.YmAcp4VBzic

今天的推文重复一下论文中的figure2c

image.png

论文中提供的代码自定义和一个很长的 函数,好像是把统计检验和作图全都综合到一起了,但是我没看明白其中统计检验的部分,这里就把作图代码单独整理出来了,统计检验的FDR值最后手动添加

首先是读取数据

代码语言:javascript
复制
dfToPlot<-read.csv("dfToPlot.csv")
head(dfToPlot)

给x轴的变量赋予因子水平

代码语言:javascript
复制
dfToPlot$RELATIONSHIP.0 <- factor(dfToPlot$RELATIONSHIP.0,
                                  levels=c("RND.PAIR","PARTNERS","PARENT_CHILD","SIBLINGS"))

这个因子水平主要是控制x轴的先后顺序

加载ggplot2

代码语言:javascript
复制
library(ggplot2)

箱线图

代码语言:javascript
复制
ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_boxplot()

抖动散点图

代码语言:javascript
复制
ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_jitter()

小提琴图

代码语言:javascript
复制
ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_violin()

三个图拼图

代码语言:javascript
复制
library(ggplot2)
ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_boxplot() -> p1

p1

ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_jitter() -> p2
p2

ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_violin() -> p3
p3

image.png

将三个图叠加到一张图上

代码语言:javascript
复制
cbPalette <- c("#E69F00", "#CC79A7", "#56B4E9", "#009E73", "#CC79A7", "#F0E442", "#999999","#0072B2","#D55E00")
ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_jitter(alpha=0.2,
              position=position_jitterdodge(jitter.width = 0.35, 
                                            jitter.height = 0, 
                                            dodge.width = 0.8))+
  geom_boxplot(alpha=0.2,width=0.45,
               position=position_dodge(width=0.8),
               size=0.75,outlier.colour = NA)+
  geom_violin(alpha=0.2,width=0.9,
              position=position_dodge(width=0.8),
              size=0.75)+
  scale_color_manual(values = cbPalette)+
  theme_classic() +
  theme(legend.position="none") + 
  theme(text = element_text(size=16)) + 
  #ylim(0.0,1.3)+
  ylab("Bray-Curtis distance of Species")

image.png

最后是手动添加统计检验的文字

代码语言:javascript
复制
ggplot(data=dfToPlot,aes(x=RELATIONSHIP.0,
                         y=BC_Spec,
                         color=RELATIONSHIP.0))+
  geom_jitter(alpha=0.2,
              position=position_jitterdodge(jitter.width = 0.35, 
                                            jitter.height = 0, 
                                            dodge.width = 0.8))+
  geom_boxplot(alpha=0.2,width=0.45,
               position=position_dodge(width=0.8),
               size=0.75,outlier.colour = NA)+
  geom_violin(alpha=0.2,width=0.9,
              position=position_dodge(width=0.8),
              size=0.75)+
  scale_color_manual(values = cbPalette)+
  theme_classic() +
  theme(legend.position="none") + 
  theme(text = element_text(size=16)) + 
  #ylim(0.0,1.3)+
  ylab("Bray-Curtis distance of Species")+
  #scale_x_discrete(labels=c("A","B","C","D"))+
  annotate("segment", x = 1-0.01, y = 1, xend = 2.01,lineend = "round", 
           yend = 1,size=1,colour="black",arrow = arrow(length = unit(0.02, "npc")))+
  annotate("segment", x = 2.01, y = 1, xend = 0.99,lineend = "round", 
           yend = 1,size=1,colour="black",arrow = arrow(length = unit(0.02, "npc")))+
  annotate("text", x=1.5,y=1.01, 
           label=expression("**"~"FDR"~2.41%*%10^-10),vjust=0)

image.png

他这里的双箭头的处理方式是把一个单箭头添加两次

制作封面图

代码语言:javascript
复制
p4+p4+scale_color_manual(values = cbPalette[5:8])

image.png

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-05-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小明的数据分析笔记本 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 论文是
  • 数据和代码的github主页链接
  • 这个也是数据代码的下载链接,可以看目录结构
  • 首先是读取数据
  • 给x轴的变量赋予因子水平
  • 加载ggplot2
  • 箱线图
  • 抖动散点图
  • 小提琴图
  • 三个图拼图
  • 将三个图叠加到一张图上
  • 最后是手动添加统计检验的文字
  • 制作封面图
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档