R 中按组对 RDA 向量着色
Color RDA vectors by groups in R
我正在用 R 绘制一系列 RDA,每个 RDA 都有 10 多个环境向量。每个环境变量都属于 5 个类别之一。我想要矢量颜色来反映这些类别。我通过制作原始的黑白图,然后在 Powerpoint 中对其进行跟踪(超级耗时),以一种有点贫民窟的方式做到了这一点,但这有很多固有的问题,但至少看起来不错。
这是那个情节,注意矢量颜色。
我希望我的输出是 R 原生图。我用来制作底图的地块目前是:
#download the data#
env<- read.csv("environmenta data.csv")
bio<- read.csv("bio data.csv")
#break out the groups of environmental vectors#
#these are purley for example#
group1<-as.matrix(subset(env,select=c(a,b,c))
group2<-as.matrix(subset(env,select=c(d,e,f,h))
group3<-as.matrix(subset(env,select=c(g))
group4<-as.matrix(subset(env,select=c(j,k,l,o))
group5<-as.matrix(subset(env,select=c(m,n,))
#run the RDA#
rda1<-rda(bio,env)
#Plot it#
plot(rda1,type="n",bty="n",main="",
xlab="XX% variance explained",
ylab="XX% variance explained",
col.main="black",col.lab="black", col.axis="white",
xaxt="n",yaxt="n")
#points(rda1,display="species",col="gray",pch=20)
#option to display species points
#text(rda2,display="species",col="gray")
#option for species labels
points(rda1,display="cn",col="black",lwd=2)#<<< guessing this is the key statement for my issue, but not sure
text(rda1,display="cn",col="black",cex=0.5)
我假设答案落在这一点上--> col="..." 命令,但我不确定如何告诉它按组划分子集。任何和所有帮助将不胜感激。
library(vegan)
#DATA
data(varespec)
data(varechem)
env = varechem
bio = varespec
rm(list = c("varechem", "varespec"))
#Assign colors based on groups for the columns of env
groups = rep(c("red", "blue"), length.out = NCOL(env))
rda1 = rda(X = bio, Y = env)
plot(rda1, type = "n")
points(rda1)
text(rda1, display = "bp", col = groups)
这里有几个问题:
- 绘制双标图分数,并且
- 根据
plot.cca
缩放双标图分数
如果你只绘制双标图分数,后者并不重要,但这种绘图的一般解决方案要求我们考虑可能还需要绘制其他分数。
这是一个使用内置数据的可重现示例
library('vegan')
data(varespec, varechem)
现在我们进行一个愚蠢的任命(伙计们不要在家里这样做)
ord <- rda(varespec ~ ., data = varechem)
接下来,提取双标图分数
bp <- scores(ord, display = 'bp')
并假设我们有一个变量,其中包含我们要将每个双标图分数分配给的组
f <- factor(sample(1:5, nrow(bp), replace = TRUE))
以及我们要使用的相关颜色矢量
cols <- c('red','black','green','navy','purple')
并将此颜色向量扩展为长度 nrow(bp)
之一,即每个双标图一种颜色 score/variable
cols <- cols[f]
接下来开始绘图,准备一个空白的绘图区域,我们可以在其中添加箭头
plot(ord, type = 'n')
在上面的示例中,我们保留设置绘图区域,以便容纳物种和 site/sample 分数。
我们现在计算一个乘数,允许双标图分数占据绘图区域的指定比例 (fill = 0.75
)
mul <- ordiArrowMul(bp, fill = 0.75)
最后,添加双标图箭头,根据它们的组着色
arrows(0, 0, mul * bp[,1], mul * bp[,2],
length = 0.05, col = cols)
并为双标图箭头添加标签
labs <- rownames(bp)
text(ordiArrowTextXY(mul * bp, labs), labs, col = cols)
这会产生
我正在用 R 绘制一系列 RDA,每个 RDA 都有 10 多个环境向量。每个环境变量都属于 5 个类别之一。我想要矢量颜色来反映这些类别。我通过制作原始的黑白图,然后在 Powerpoint 中对其进行跟踪(超级耗时),以一种有点贫民窟的方式做到了这一点,但这有很多固有的问题,但至少看起来不错。
这是那个情节,注意矢量颜色。
我希望我的输出是 R 原生图。我用来制作底图的地块目前是:
#download the data#
env<- read.csv("environmenta data.csv")
bio<- read.csv("bio data.csv")
#break out the groups of environmental vectors#
#these are purley for example#
group1<-as.matrix(subset(env,select=c(a,b,c))
group2<-as.matrix(subset(env,select=c(d,e,f,h))
group3<-as.matrix(subset(env,select=c(g))
group4<-as.matrix(subset(env,select=c(j,k,l,o))
group5<-as.matrix(subset(env,select=c(m,n,))
#run the RDA#
rda1<-rda(bio,env)
#Plot it#
plot(rda1,type="n",bty="n",main="",
xlab="XX% variance explained",
ylab="XX% variance explained",
col.main="black",col.lab="black", col.axis="white",
xaxt="n",yaxt="n")
#points(rda1,display="species",col="gray",pch=20)
#option to display species points
#text(rda2,display="species",col="gray")
#option for species labels
points(rda1,display="cn",col="black",lwd=2)#<<< guessing this is the key statement for my issue, but not sure
text(rda1,display="cn",col="black",cex=0.5)
我假设答案落在这一点上--> col="..." 命令,但我不确定如何告诉它按组划分子集。任何和所有帮助将不胜感激。
library(vegan)
#DATA
data(varespec)
data(varechem)
env = varechem
bio = varespec
rm(list = c("varechem", "varespec"))
#Assign colors based on groups for the columns of env
groups = rep(c("red", "blue"), length.out = NCOL(env))
rda1 = rda(X = bio, Y = env)
plot(rda1, type = "n")
points(rda1)
text(rda1, display = "bp", col = groups)
这里有几个问题:
- 绘制双标图分数,并且
- 根据
plot.cca
缩放双标图分数
如果你只绘制双标图分数,后者并不重要,但这种绘图的一般解决方案要求我们考虑可能还需要绘制其他分数。
这是一个使用内置数据的可重现示例
library('vegan')
data(varespec, varechem)
现在我们进行一个愚蠢的任命(伙计们不要在家里这样做)
ord <- rda(varespec ~ ., data = varechem)
接下来,提取双标图分数
bp <- scores(ord, display = 'bp')
并假设我们有一个变量,其中包含我们要将每个双标图分数分配给的组
f <- factor(sample(1:5, nrow(bp), replace = TRUE))
以及我们要使用的相关颜色矢量
cols <- c('red','black','green','navy','purple')
并将此颜色向量扩展为长度 nrow(bp)
之一,即每个双标图一种颜色 score/variable
cols <- cols[f]
接下来开始绘图,准备一个空白的绘图区域,我们可以在其中添加箭头
plot(ord, type = 'n')
在上面的示例中,我们保留设置绘图区域,以便容纳物种和 site/sample 分数。
我们现在计算一个乘数,允许双标图分数占据绘图区域的指定比例 (fill = 0.75
)
mul <- ordiArrowMul(bp, fill = 0.75)
最后,添加双标图箭头,根据它们的组着色
arrows(0, 0, mul * bp[,1], mul * bp[,2],
length = 0.05, col = cols)
并为双标图箭头添加标签
labs <- rownames(bp)
text(ordiArrowTextXY(mul * bp, labs), labs, col = cols)
这会产生