NiuGuoxiang的个人博客分享 http://blog.sciencenet.cn/u/NiuGuoxiang

博文

R语言使用ggplot2对冗余分析(RDA)等约束排序分析结果作图

已有 8154 次阅读 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)

 

  




http://blog.sciencenet.cn/blog-3366717-1217116.html

上一篇:多因素方差分析主效应和交互效应的理解
下一篇:R语言RDA分析全过程梳理及注意事项

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

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

GMT+8, 2021-10-23 16:43

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部