R之箱线图绘制


16s分析一直在连载,但是最基础的莫过于alpha多样性了,但是箱线图却不是alpha多样性的唯一选择,箱线图也不是局限于alpha多样性,这里借助alpha多样性,将箱线图做一个完整绘制


#这里安装的这个包就是做显著性分析的

#install.packages("ggpubr")安装包

library("ggplot2")

library("ggpubr")

setwd("E:/Shared_Folder/HG_usearch_HG")

# 读入实验设计和Alpha多样性值

design =read.table("map_lxdjhg.txt", header=T, row.names= 1,sep="\t")

alpha =read.table("alpha8825.txt", header=T, row.names= 1,sep="\t")

head(design)

head(alpha)

#合并数据框,按照列,all=F,表示只取两者共有列名的数据

index =merge(alpha, design,by="row.names",all=F)

head(index)

方便大家学习,这里给出index数据窗口:


#添加作图变量,使用geom_boxplot()不修改任何参数,出图,似乎也挺好看的!

ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot()

但是我们还不够满意!继续:

#我们让所有样本点都显示出来

ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot()+geom_jitter()

似乎很凌乱,这里咱们有办法:

可以通过设置“jitter”参数来调整数据的分布:geom_jitter(position=position_jitter(0.5))

position_jitter用来调整数据的凌乱程度,数值越大越凌乱。

#我们数据量比较少,设置紧密一点既可以达到美观的

ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot()+geom_jitter(position=position_jitter(0.15))

这张图出来我们发现异常了,我明明只有九个点,为什么有的组会多几个点呢,原来是箱线图将原来异常值的点算了两次,这里我们去掉原来异常值的点:alpha=0为什么选用这个命令呢,因为这里咱们还要使用,点的颜色和箱线图相冲,这个命令可以调节透明度,弱化点的存在:

#我们的点不需要这么亮,于是设置透明度为alpha:0.4

ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot(alpha=0)+geom_jitter(position=position_jitter(0.17),alpha=0.4)

问题又来了,箱线图箱子很细,不好看:

#加上我们自己设定的标签

ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot(alpha=0,size=0.8, width=0.5)+

geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+

labs(x="Groups", y="chao1index")

size=0.8:调整箱子厚度

width=0.5:调整箱子宽度

size=1.2:调整点的大小

调整一下外观:

p<-ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot(alpha=0,size=0.8, width=0.5)+

geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+

labs(x="Groups", y="chao1index")

p+theme_classic()

有些小伙伴可能有分面的需求,这里我选了一部分观测,来做分面,一个分面只有一个箱子,当然要有多个箱子,就把多个箱子分为一组就好了,

#取三组观测

index1<-index[index$SampleType%in%c("GF1","GC1","G0"),]#多个字符串就要用这个%in%c

head(index1)

p<-ggplot(index1,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot(alpha=0,size=0.8, width=0.5)+

geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+

labs(x="Groups", y="chao1index")

#分面命令facet_grid

p+ facet_grid(.~SampleType)

到这里,箱线图就说的差不多了,但是作为科研用图,统计自然少不了,然我们来为自己的箱子做统计分析吧:

这里推荐包ggpubr,这里用参数检验和非参数检验方法

图片来自R语言可视化学习笔记之添加p-value和显著性标记,Easycharts公众号

head(index)

#默认为"wilcox.test"这是两组的非参数检验,微生物生态方面我们常用非参数检验,但是这里我们是多个组的,因此,更改为Kruskal-Wallis检验

compare_means(shannon~SampleType,data=index, paired = TRUE,method = "kruskal.test")

结果如下,多组间是显著的:

#在这里我们就两两检验,看看那些组显著:

df_summarise<-compare_means(shannon~SampleType,data=index, paired = TRUE)

# compare_means的计算是以tbl格式返回的,我们可以转成dataframe

df_summarise<-as.data.frame(df_summarise)

setwd("L:/#R语言学习/测试数据")

write.table(df_summarise,"alpha—wilcox.test.txt",quote= FALSE,row.names = T,

col.names = T,sep = "\t")

输出表格,使用excel查看:(这里没有必要输出第一列,可以设置row.names = F)

但是ggpubr包提供了更加方便的方式将这些显著性结果展示在图上

#多组检验,设置合适的坐标

p+theme_classic()+stat_compare_means(method= "kruskal.test",label.x = 1.5, label.y = 2900)

#不只是多组检验,我们选择关注的两组检验

my_comparisons<- list(c("GC1", "GF1"), c("GC5","GF5"))

#这里我们由于选择了要两组比较的组,所以为了出图美观,将横坐标进行了一个排序,做显著性将不显著的组hide.ns = T隐藏,由于在做多组比较是出错,无法和排序命令一起使用,所以这里我人工添加多组比较结果

p+theme_classic()+scale_x_discrete(limits=c("G0","GC1","GF1","GC5","GF5","GN1","GN5"))+

stat_compare_means(comparisons=my_comparisons,label ="p.signif",hide.ns = T)+

annotate("text",x=1.7,y=2200,parse=TRUE,size=4,label="'kruskal.test:'*5.3e-09",family="serif",fontface="italic",colour="darkred")

到这里就快完成了,我们加上保存命令,再次重新出图:

#  res = 300分辨率,units="mm"高度和宽度的单位#发文章中要求的格式和一些其他参数设置如上

tiff(file="alpha_chao1.tif",res = 300, compression = "none", width=180,height=140,units="mm")

p<-ggplot(index,aes(x=SampleType, y=chao1, color=SampleType))+

geom_boxplot(alpha=0,size=0.8, width=0.5)+

geom_jitter(position=position_jitter(0.15),alpha=0.6,size=1.2)+

labs(x="Groups", y="chao1index")

p+theme_classic()+scale_x_discrete(limits=c("G0","GC1","GF1","GC5","GF5","GN1","GN5"))+

stat_compare_means(comparisons=my_comparisons,label= "p.signif",hide.ns = T)+

annotate("text",x=1.7,y=2200,parse=TRUE,size=4,label="'kruskal.test:'*5.3e-09",family="serif",fontface="italic",colour="darkred")

dev.off()#这条命令必须加上才可以得到保存的图片


学习永无止境,分享永不停歇!


(0)

相关推荐

  • 技术贴 | R语言:ggplot绘图的Y轴截断和拼接

    导读 记录一个产生Y轴截断ggplot绘图的方法.先用coord_cartesian根据Y轴把图截断成上下两份,接着用ggarrange拼接到一起,实现去不要的部分 一.准备依赖包 ggarrange ...

  • R语言ggboxplot-一文掌握箱线图绘制所有细节

    载入数据 1Sys.setlocale('LC_ALL','C') 2load(file = "F:/Bioinfor_project/Breast/AS_research/AS/resul ...

  • 跟着Nature Genetics 学画图:R语言ggplot2画箱线图(boxplot)展示D s...

    简介:R语言统计与绘图公众号目前致力于分享医学统计与R绘图知识,手把手教你使用R语言绘制基线特征表.KM生存曲线.森林图.ROC曲线等.每天一篇精彩R语言推文教程,手把手带你入门R语言绘图. 今天推文 ...

  • Origin绘制瀑布图/多轴图/箱线图/小提琴图/3D曲面图/3D散点、带状、墙形图等

    本套Origin课程内容超级全面,手把手教你绘制168个经典常用图例,包括箱线图.小提琴图.点线图.多轴图.瀑布图.饼图和环形图.3D散点/带状/墙形图.3D条状图.3D曲面图.柱状图.条形图.面积图 ...

  • R ggplot和ggsignif箱线图添加显著性差异标识

    22019.03.07 11:33:11 具有显著性标注的箱线图 有时候我们会看到如上图片,觉得挺好,但是如何实现呢?没有做的的时候,觉得挺难,但是真要做才发现没有那么困难? 其实做这样的图,目前R比 ...

  • 服务业六西格玛管理项目工具-箱线图

    箱线图(也称为方框虚线图)可用来评估和比较样本分布.箱线图在六西格玛D阶段及A阶段用得比较多,在T检验和方差分析的图形输出中都有用到.Quartile ("Q") 代表数据的四分之 ...

  • R绘图笔记 | 热图绘制

    关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘图笔记 | 二维散点图与统计直方图组合 R绘图笔记 | 散点分 ...

  • 箱线图的生物学含义

    我们阅读量破万的综述:RNA-seq这十年(3万字长文综述) 给粉丝朋友们带来了很多理解上的挑战,所以我们开辟专栏慢慢介绍其中的一些概念性的问题,上一期: 表达矩阵的归一化和标准化,去除极端值,异常值 ...

  • 箱线图你真的懂了吗?

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO, SEER数据挖掘. 箱线图的理解,以下先画出一个箱线图 library(tidyv ...

  • 箱线图和小提琴图合在一起更好

    Boxplot 一般我们的箱线图就是这样 # Libraries library(tidyverse) library(hrbrthemes) library(viridis) # create a ...