R绘制箱线图-绘制箱线图的步骤

欢迎关注公众号:生信艺术家
干货全拿走!
网上的教程绘箱线图和小提琴图已经很多很详细了,ggplotbox和ggplot都可以,加上geom_violin()就成小提琴图了 。那就主要分享一下通过R里的Shiny对箱线图的风格、线条、坐标轴调整达到出版的要求 。交互式操作就是不需要输入代码,只需要鼠标点点就可以得到想要的结果 。

R绘制箱线图-绘制箱线图的步骤




一、简单介绍

1.什么是Shiny?


R绘制箱线图-绘制箱线图的步骤


Shiny是一个搭建Web应用的R语言框架 。简单来说,就是可以Shiny搭建一个网站 。通过Shiny, 我们只需要掌握最基础的一些语法知识,而不必深入学习 HTML或者 JavaScript。这就是 Shiny最大的便利之处 。实际上我们也不用掌握Shiny,在R里面调整图像主题 , 是通过一个基于Shiny的R包ggThemeAssist来完成 。

2. R包ggThemeAssist

ggThemeAssist横空出事,它依赖shiny (>= 0.13), miniUI (>= 0.1.1), rstudioapi (>= 0.5), ggplot2, formatR,可以对ggplot2图形结果直接修改,并实时预览效果,同时编辑结束返回代码 。相当于一个帮你写代码的翻译官!

【R绘制箱线图-绘制箱线图的步骤】当运行ggThemeAssist(),就会看到打开了一个窗口,上部为图形预览窗口,下部有6个选项卡 , 分别对应各类主题细节的调整 。之后将讲解具体参数 。
R绘制箱线图-绘制箱线图的步骤



3. 小提琴图和箱线图的区别
小提琴图和箱线图类似,用来显示数据分布和概率密度 。结合了箱线图和密度图的特征,用来显示数据的分布形状 。箱线图是长方形上线一样宽,无法反应数据在哪个值时分布较多 , 而小提琴图像水滴、葫芦状 , 胖的地方反映了数据密度高的地方 。
R绘制箱线图-绘制箱线图的步骤

R绘制箱线图-绘制箱线图的步骤





二、数据准备

1.R包安装

install.packages("ggThemeAssist")library(ggThemeAssist)install.packages("shiny")library(shiny)library(ggplot2)
library(ggpubr)
library(reshape2)


2. 数据准备


R绘制箱线图-绘制箱线图的步骤

一个类似于这样的excel文件或txt文件,把他读到R里数据框存储 。
mydata=https://www.itzhengshu.com/wps/read.csv("E:/species_pdistance.csv",head=T)



三、实战操作
在R里,只要把需要R包安装好,数据读好(注意表头和列名),接下来画图只需要复制一行代码过来就行 。麻烦的是一些细节 , 比赛坐标轴物种的顺序,差异分析时T检验,显著性分析,一些期刊要求的线条粗细,点的大?。该鞫鹊鹊?。这些都会在下面介绍到 。
1.ggboxplot绘制箱图
ggboxplot(mydata,x="Species" ,y="Pdistance", color = "Species" ,bxp.errorbar = T, add="jitter",palette = "aaas",width = 0.7,size = 0.01,ylab = "P distance",xlab = NULL)theme(axis.line = element_line(size = 0.15),axis.text = element_text(size = 7))# palette = "aaas"可以调整图像的配色风格
那么运行上面代码就得到这样的一张图
R绘制箱线图-绘制箱线图的步骤



2.ggplot2绘制箱图
通过ggplot() geom_boxploy()来画
ggplot(mydata,aes(x=Species,y=Pdistance,color = Species))geom_boxplot(outlier.colour = "gray",outlier.size=0.7,outlier.alpha=0.7,size = 0.3)scale_fill_brewer(palette="Pastel1")
运行代码
R绘制箱线图-绘制箱线图的步骤


3. ggplot2绘制小提琴图
通过ggplot() geom_violin()来画
ggplot(mydata,aes(Species,Pdistance), color = "Species")geom_violin(aes(fill=Species),show.legend = F)theme(panel.grid = element_blank(),panel.background = element_blank(),axis.line = element_line(),axis.text.x = element_text(angle=0,hjust = 0.5,vjust=0.5),plot.title = element_text(hjust=0.5))scale_fill_brewer(palette="Pastel1")
运行代码
R绘制箱线图-绘制箱线图的步骤

这样三幅图就画完了,下面就是根据出版要求的细节调整了 。就用小提琴图举例 。

4. 在图像中显示每个数据点
通过这个geom_sina()来实现,需要先加载这个ggforce包 。
library(ggforce)ggplot(mydata,aes(Species,Pdistance), color = "Species")geom_violin(aes(fill=Species),show.legend = F)theme(panel.grid = element_blank(),panel.background = element_blank(),axis.line = element_line(),axis.text.x = element_text(angle=0,hjust = 0.5,vjust=0.5),plot.title = element_text(hjust=0.5))scale_fill_brewer(palette="Pastel1")geom_sina(size=0.6,alpha=0.2)
R绘制箱线图-绘制箱线图的步骤


5. 调整X轴物种顺序
通过scale_x_discrete(limits=c("S.nitens","X.riparia", "T.occipitalis","S.cancellata"))完成 。
ggplot(mydata,aes(Species,Pdistance), color = "Species")geom_violin(aes(fill=Species),show.legend = F)theme(panel.grid = element_blank(),panel.background = element_blank(),axis.line = element_line(),axis.text.x = element_text(angle=0,hjust = 0.5,vjust=0.5),plot.title = element_text(hjust=0.5))scale_fill_brewer(palette="Pastel1")geom_sina(size=0.8,alpha=0.5)scale_x_discrete(limits=c("S.nitens","X.riparia", "T.occipitalis","S.cancellata"))
R绘制箱线图-绘制箱线图的步骤


6.差异分析显著性检验T-test
通过这个stat_compare_means()来完成,需要注意的是这个参数不能和scale_x_discrete()一起使用 。
ggplot(mydata,aes(Species,Pdistance), color = "Species")geom_violin(aes(fill=Species),show.legend = F)theme(panel.grid = element_blank(),panel.background = element_blank(),axis.line = element_line(),axis.text.x = element_text(angle=0,hjust = 0.5,vjust=0.5),plot.title = element_text(hjust=0.5))scale_fill_brewer(palette="Pastel1")geom_sina(size=0.8,alpha=0.5)stat_compare_means(label = "p.signif", method = "t.test",ref.group = "S.cancellata")# 每个组和S.cancellata进行差异分析
R绘制箱线图-绘制箱线图的步骤

7. ggThemeAssist调整各项参数(线条粗细,点大小,透明度,标题等)
小提琴图实在太丑了就用箱线图来展示吧!
先画个箱线图,把图像存到a变量里,方便使用ggThemeAssistGadget()函数 。
a=ggplot(mydata,aes(x=Species,y=Pdistance,color = Species))geom_boxplot(outlier.colour = "gray",outlier.size=0.7,outlier.alpha=0.7,size = 0.3)scale_fill_brewer(palette="Pastel1")
R绘制箱线图-绘制箱线图的步骤

接下来就是见证奇迹的时刻了,输入ggThemeAssistGadget(a),就可看到一个交互式窗口 。
ggThemeAssistGadget(a)
R绘制箱线图-绘制箱线图的步骤

可以先进入第一个选项卡设置,调整图像的长宽 。
R绘制箱线图-绘制箱线图的步骤


接下来是第二个选项卡 Panel & Backgroud
R绘制箱线图-绘制箱线图的步骤

比如说我背景不想要灰色,想调成透明,就在红色圈出的地方调整,调整后上面的图片也会跟着刷新 。

第三个选项卡是坐标轴,可以调整坐标轴的字体大小,颜色,倾斜角度,坐标轴线的粗细 , 颜色等 。
R绘制箱线图-绘制箱线图的步骤





第四个选项卡是标题与标签 , 可以添加图片的名称 , 字体大?。丈?。比如说添加标题 。
R绘制箱线图-绘制箱线图的步骤


第五个选项卡是图例,可以调整Position:位置,可选无none,左left , 右right,上top,下buttom , Direction:方向,可按水平horizontal,或垂直vertical排列 。比如说我想把图例跳到下面并水平排列 。
R绘制箱线图-绘制箱线图的步骤


第6个选项卡是子标题和图注 。可以修改子标题(Subtitle)和图注(Caption)中的内容 。同时可修改文字的属性,如字体家族、样式、大小、颜色和水平位置 。比如说添加个子标题 。
R绘制箱线图-绘制箱线图的步骤


以上面板中可修改上百个参数,并提供几百个属性值的选择 。这些要是靠自己记住,那可真是太难了 。此包为R语言绘图的细节调提供了极大帮助 。
而且调好的样式,点击done完成 , 马上写书规范的代码就写好了,方便可重复计算和进一步修改 。这就是代码的强大之处 。
可以看一下点done后的效果 。
R绘制箱线图-绘制箱线图的步骤

他会自动生成一个代码给你,包含所有你调整的参数 。

8. 进阶的箱线图 。
比如你的数据类型是这样的 。
R绘制箱线图-绘制箱线图的步骤

在做箱图时,先对一个物种里面的数据分一个组 , 上图就可以先按长度分一个区间 。
ggplot(allsp_P ,aes(x=factor(range,levels =c("range500", "range1000", "", "rang2000", "range4000", "range10000")),y=Pdistance,fill =factor(species,levels =c('G.bimaculatus','T.ooria ','S.nitens','S.americana','S.serialis')) ))geom_boxplot(outlier.colour = "gray",outlier.size=0.7,outlier.alpha=0.7,size = 0.3)scale_fill_brewer(palette="Pastel1")stat_compare_means(label = "p.signif", method = "t.test",ref.group = "") theme_bw()labs(y = "P distance")theme(panel.grid=element_blank())
这样就可以得到这样的图了
R绘制箱线图-绘制箱线图的步骤


以上就是所有箱线图和小提琴图的参数了 。是不是点点鼠标就能完成 , 不用写代码的感觉真好?






以上内容仅为个人总结 , 如有错误之处敬请批评!
联系我们:
190891968@qq.com





点击下方即可关注我们!


R绘制箱线图-绘制箱线图的步骤

相关经验推荐