我在R中绘制了一系列RDAs,每个RAs都有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)
Run Code Online (Sandbox Code Playgroud)
我假设答案落在这一点 - > col ="..."命令,但我不知道如何按组分组.任何和所有的帮助将不胜感激.
我正在构建一个有偏差的相关随机游走,我已经设法构建RW,并将其偏向西方运动.
问题:我需要将步行绑定在一个(或所有)侧面.
目前的代码是:
walk<-function(n.times){
plot(524058:542800,2799758:2818500,type="n",
xlab="Easting",ylab="Northing")#aren??a
y<-2815550 ##startY
x<-542800 #startX
N<-4000
E<-4000
points(x,y,pch=16,col="red",cex=1)
for (i in 1:n.times) {
yi <- sample(c(N,N/2,N/4,N/8,N/12,N/16,
0,-N,-N/2,-N/4,-N/8,-N/12,-N/16),1)
xi<-sample(c(E,E/12,E/16, 0,-E,-E/2,-E/4,-E/8,-E/12,-E/16),1)
lines(c(x,x+xi),c(y,y+yi),col="blue")
x<-x+xi
y<-y+yi
}
}
iterations<-125
walk(iterations)
Run Code Online (Sandbox Code Playgroud)
到目前为止,我最接近的是使用
if(y>2818500 | y<2799758 | x>542800 | x<524058) break
Run Code Online (Sandbox Code Playgroud)
如果它离开竞技场,它就会停止行走.
我正在尝试生成一个品种拥有的变量,该变量从 Netlog 中的随机 beta 分布中提取其值。
我在网上找到了“bc”代码示例,但正在努力使其适应我的需要。现在,为了方便起见,我已经使用随机正态分布生成了我的分布
create-breed 500
[
set target_factor random-normal 0.9 0.05
if target_factor > 1 [set target_factor 0.9999999999]
if target_Factor < 0.5 [set target_factor 0.5000000001]
]
Run Code Online (Sandbox Code Playgroud)
所以基本上我想要一个可以用随机 beta 分布替换“随机正态 0.9 0.05”部分的记者
我到目前为止:
to-report random_beta
set asocial_alpha 2
set asocial_beta 2
set asocial_min_eps 0
set asocial_max_eps 0.25
let x random-gamma asocial_alpha 1
let asocial_eps (x / (x + random-gamma asocial_beta 1))
set asocial_eps asocial_min_eps + (asocial_eps * (asocial_max_eps - asocial_min_eps))
foreach ( n-values 99 [ (? + 1) …Run Code Online (Sandbox Code Playgroud) 在我的数据中,我对每个空间单位有 1000 个度量,并想绘制每个单位的变异系数。我知道如何计算整个数据集的变异系数,但我将如何:
1) 创建一个函数来获取所有类别名称(列中的唯一值)。
2) 仅将 CV 函数应用于每个类别中的那些数据
3) 输出结果,以便将它们绘制为 x=category 和 y=CV
可以使用 Iris 数据集作为示例。假设我想知道每个物种的花瓣长度变异系数。简历本身很简单,但我对它的其余部分不知所措。
data(iris)
CV<-function(mean,sd){
(sd/mean)*100
}
IrisCV<-CV(mean=mean(iris$Petal.Length), sd=sd(iris$Petal.Length))
IrisCV
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢!
我正在 R Studio 中生成一系列图,只有数据源在它们之间发生变化。我不想手动编辑每个标题,而是自动将绘图标题指定为数据源的名称(矩阵)。不过,我正在努力将逻辑流程概念化。过于简化的代码示例:
a<-matrix(1:10, ncol = 10,nrow=10)
b<-matrix(10:20,ncol=10,nrow=10)
plot(a)
mtext(side=3, "a") #I'm using mtext instead of main because the plotting function I use doesn't support 'main'
plot(b)
mtext(side=3, "b")
Run Code Online (Sandbox Code Playgroud)
所以在这个例子中,我希望第一个情节的主标题是“a”,第二个是“b”;但是,现在的编写方式我需要手动调整mtext(side=3,"X". 我想让 mtext 语句读取矩阵名称并使用它。我承认,这有点超出我的能力范围。任何帮助表示赞赏!
由于缺少源数据,我的实际代码将无法重现,但根据评论中的要求,代码如下:
source<-n20DO1 #source data used to generate comm
comm<-bn20DO1 #actual data being used, this is the one with the title
Low<-count(source$DObin==1)[2,2]
Low<-if(is.na(Low)) {Low <- 0} else {count(source$DObin==1)[2,2]}
Mod<-count(source$DObin==2)[2,2]
Mod<-if(is.na(Mod)) {Mod <- 0} else {count(source$DObin==2)[2,2]}
High<-count(source$DObin==3)[2,2]
High<-if(is.na(High)) {High <- 0} else {count(source$DObin==3)[2,2]}
LMH <- matrix(c(Low, …Run Code Online (Sandbox Code Playgroud) 我需要创建一个随机数生成器,使某些值类的选择偏向于其他值.例如:
如果我告诉它返回1到5之间的值,则无偏差将为每个值分配20%的概率.但是,如果我希望2和3的概率分别为30%,其他概率则相应地加权.
我如何在R中以1-16的范围进行此操作而不将输出限制为整数?< - 由Keegan解决的问题如下.下面的代码现在使用它的修改,但最后我将运行该方法.
新问题:当我跑步时,它有两个问题:
1)它总是返回相同的路径(它应该是随机的,因此极不可能两次给出相同的路径).
2)如果你再次运行walkW(s)它会失败,说XY坐标不再存在.在将示例池更改为UBstep和Bstep之前,这不是问题,但我没有看到这是如何以及为什么会发生这种情况或如何解决它.
我以前提供过核心代码.您需要在工作目录中标记为"testmap2.png"的二进制映像以及运行它的EBImage包.
要生成错误:运行整个代码一次,然后再次运行line walkW(s)
提前致谢!
library("EBImage")
#calculating Z
P<-95 #dont worry about it
step.max<-125 #number of steps allowed to walk
stride<-131 #maximum pixel distance covered per step.
s<-step.max
#step size pool
UBstep<-c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20)
Bstep<-c(1,3,5,7,9,11,13,15,17,19)
#bring in a background image
pic<-readImage("testmap2.png",all=TRUE,package="EBImage")
rpic<-as.raster(pic)
#start walking
walkW <- function(n.times=125,
xlim=c(0,615),
ylim=c(0,615),
start=c(520,100),
stepsize=c(stride,stride)) {
plot(c(0,0),type="n",xlim=xlim,ylim=ylim,
xlab="x",
ylab="y",
col="black",col.lab="black")
lim <- par()
rasterImage(rpic, lim$usr[1], lim$usr[3], lim$usr[2], lim$usr[4])
x <- start[1]
y <- start[2]
steps <- 1/sample(UBstep,1)
Bsteps<-sample(Bstep,1) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在 netlogo 中构建一个多物种模型。所有海龟都有相同的运动协议,但他们的决定是基于同种密度(它们在一个补丁中的品种数量),而不是完整的海龟数量。有没有办法让他们认出自己品种的成员,而无需在这里特别说计数品种
我想它会是这样的
count breed(self?)-here
Run Code Online (Sandbox Code Playgroud)
但这不是 netlogo 语法。我希望他们:1) 计算当前补丁的品种数量 2) 计算半径 x 补丁的品种数量
最终目标是为所有品种制定一个单一的运动协议以供参考(而不是每个品种都有一个单独的运动协议)。
提前致谢!