科学网

 找回密码
  注册

tag 标签: 分组绘制颜色

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

R语言使用ggplot2对冗余分析(RDA)等约束排序分析结果作图
NiuGuoxiang 2020-2-5 15:31
R语言使用ggplot2对冗余分析(RDA)等约束排序分析结果作图 冗余分析(RDA)等约束排序分析常常被用来分析群落物种数据,并找到哪些环境因子对物种数据有所影响。之前用R进行RDA分析,但是结果往往是用sigmplot展示作图,最近用R语言作图有好多小问题需要克服,记录一下。关于RDA分析,也看了好多别人的资料,不再做记录,这里推荐刘尧科学网博客 http://blog.sciencenet.cn/blog-3406804-1182489.html ,里面也有很多其他的分析,都很详细,看了好几遍,但是必须自己做一遍,才能把握整个过程。 这里只记录作图代码以备以后用。数据简单说明(仅举例),共4个氮素水平,对照(CK),N2(每年每平方米加氮2g),N10(10g),N50(50g), 每个处理6个重复,共24个样点。环境因子共有9个(图1蓝色箭头),微生物群落结构是7个数据(图1红色箭头),PLFA实验数据。 文件rdatu1: RDA分析后环境因子坐标 biplot 文件rdatu2: 微生物群落结构坐标 species 文件rdatu: 24个样方点坐标 sites 数据格式如下,这些坐标可以直接用代码获取,这里留存进行二次分析。 要解决的小问题? 1. 分组绘制颜色: 如图3,即不同处理的样方点分组显示不同颜色,环境因子和微生物结构分组显示。我在文章上经常见到图一和二类似的图。 原本环境因子和微生物因子坐标是一个文本 ,作图时遇到问题,总想改动代码一次性把图画好,发现一直运行不了,就把数据分成两部分,把画 线部分 重新写了一遍,试一试,发现真可以。 2. 文字显示: 文字老是重叠或遮挡如图1,以前在sigmplot可以手动调,但是箭头画的不好,这里加载ggrepel包,画图时把geom_text 改为geom_text_repel(即代码绿色部分)即可。ggrepel包和ggplot2语句几乎是通用的。 3. 微生物群落和环境因子数据坐标数据差异太大。有时候作图发现,箭头很长或很短,很不美观,也不能清晰的展示内容。这时候可以把微生物群落数据新坐标( 一般是物种数据太大,在外围;环境因子数据太小,聚在中间 )同比例缩小,但切记是同比例,且必须所有的微生物坐标都要缩小。这种做法是允许的,也不会影响群落结构与环境因子的关系。 以下是作图的代码,只需要改动红色部分就可以,这些作图的小技巧同样适用于其他约束排序和非约束排序分析。 library(ggrepel) ##这个包能最大可能使图中文字显示,减少文字重叠。 library (ggplot2) rdatu-read.table(clipboard,header=T) ##解释因子新坐标 rdatu1-read.table(clipboard,header=T) ## 微生物因子新坐标 这三个坐标也可以用R代码获得见以上链接,这里主要是需要保存一下RDA分析结果 rdatu2-read.table(clipboard,header=T) ##样方新坐标,示例24个数据,4个处理,每种处理6个重复 P1- ggplot( rdatu, aes(RDA1, RDA2)) + # 换成rdatu2,后两行#去掉运行就得图三,这里只做图1和2; #geom_point(aes(color =Treatment)) + # 绘制点图 #scale_color_manual(values = c('red', 'orange', 'green3',blue)) + #按照处理绘制点颜色 theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent'), legend.title = element_blank(), legend.key = element_rect(fill = 'transparent')) + labs (x = 'RDA1 (37.75%)', y = 'RDA2 (6.52%)') + geom_vline(xintercept = 0, color = 'gray', size = 0.5) + geom_hline(yintercept = 0, color = 'gray', size = 0.5) + geom_segment( data = rdatu , aes(x = 0,y = 0, xend = RDA1,yend = RDA2), arrow = arrow(length = unit(0.1, 'cm')), size = 0.3, color = blue) + geom_text_repel( data = rdatu , aes(RDA1 * 1.1, RDA2 * 1.1, label = group), color = blue, size = 3) + geom_segment( data = rdatu1 , aes(x = 0,y = 0, xend = RDA1,yend = RDA2), arrow = arrow(length = unit(0.1, 'cm')), size = 0.3, color = red) + geom_text_repel ( data = rdatu1 , aes(RDA1 * 1.1, RDA2 * 1.1, label = group), color = red, size = 3)
个人分类: 统计学习|17655 次阅读|0 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-3 04:20

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部