大家好,欢迎来到IT知识分享网。
欢迎关注公众号:生信艺术家
网上的教程绘箱线图和小提琴图已经很多很详细了,ggplotbox和ggplot都可以,加上geom_violin()就成小提琴图了。那就主要分享一下通过R里的Shiny对箱线图的风格、线条、坐标轴调整达到出版的要求。交互式操作就是不需要输入代码,只需要鼠标点点就可以得到想要的结果。
一、简单介绍
1.什么是Shiny?
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图形结果直接修改,并实时预览效果,同时编辑结束返回代码。相当于一个帮你写代码的翻译官!
当运行ggThemeAssist(),就会看到打开了一个窗口,上部为图形预览窗口,下部有6个选项卡,分别对应各类主题细节的调整。之后将讲解具体参数。
3. 小提琴图和箱线图的区别
小提琴图和箱线图类似,用来显示数据分布和概率密度。结合了箱线图和密度图的特征,用来显示数据的分布形状。箱线图是长方形上线一样宽,无法反应数据在哪个值时分布较多,而小提琴图像水滴、葫芦状,胖的地方反映了数据密度高的地方。
二、数据准备
1.R包安装
install.packages(“ggThemeAssist”)library(ggThemeAssist)install.packages(“shiny”)library(shiny)library(ggplot2)
library(ggpubr)
library(reshape2)
2. 数据准备
一个类似于这样的excel文件或txt文件,把他读到R里数据框存储。
mydata=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"可以调整图像的配色风格
那么运行上面代码就得到这样的一张图
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")
运行代码
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")
运行代码
这样三幅图就画完了,下面就是根据出版要求的细节调整了。就用小提琴图举例。
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)
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"))
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进行差异分析
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")
接下来就是见证奇迹的时刻了,输入ggThemeAssistGadget(a),就可看到一个交互式窗口。
ggThemeAssistGadget(a)
可以先进入第一个选项卡设置,调整图像的长宽。
接下来是第二个选项卡 Panel & Backgroud
比如说我背景不想要灰色,想调成透明,就在红色圈出的地方调整,调整后上面的图片也会跟着刷新。
第三个选项卡是坐标轴,可以调整坐标轴的字体大小,颜色,倾斜角度,坐标轴线的粗细,颜色等。
第四个选项卡是标题与标签,可以添加图片的名称,字体大小,颜色。比如说添加标题。
第五个选项卡是图例,可以调整Position:位置,可选无none,左left,右right,上top,下buttom,Direction:方向,可按水平horizontal,或垂直vertical排列。比如说我想把图例跳到下面并水平排列。
第6个选项卡是子标题和图注。可以修改子标题(Subtitle)和图注(Caption)中的内容。同时可修改文字的属性,如字体家族、样式、大小、颜色和水平位置。比如说添加个子标题。
以上面板中可修改上百个参数,并提供几百个属性值的选择。这些要是靠自己记住,那可真是太难了。此包为R语言绘图的细节调提供了极大帮助。
而且调好的样式,点击done完成,马上写书规范的代码就写好了,方便可重复计算和进一步修改。这就是代码的强大之处。
可以看一下点done后的效果。
他会自动生成一个代码给你,包含所有你调整的参数。
8. 进阶的箱线图。
比如你的数据类型是这样的。
在做箱图时,先对一个物种里面的数据分一个组,上图就可以先按长度分一个区间。
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())
这样就可以得到这样的图了
以上就是所有箱线图和小提琴图的参数了。是不是点点鼠标就能完成,不用写代码的感觉真好?
以上内容仅为个人总结,如有错误之处敬请批评!
联系我们:
@.com
点击下方即可关注我们!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/108525.html