注意:如果您想重复我的代码,您需要从CRAN下载SMfSB软件包。但是,我不认为这是回答我的问题所必需的。
我有这段代码
cl <- rainbow(18)
plot(1, type="n", xlab="Time", ylab="Number of prey",xaxt='n', xlim=c(0,
300), ylim=c(0, 1500), main="Caldrat")
for(i in seq(from=50, to=200, by=50)){
for(k in seq(50,200,50)){
LV$h = function (x, t, th=c((k/100)*1,(i/100)*0.005,0.6))
{
with(as.list(c(x, th)), {
return(c(th[1] * x1, th[2] * x1 * x2, th[3] * x2))
})
}
out = gillespied(LV,T=30,dt=0.1)
M1 = matrix(out[,1])
for(j in 1:5){
out=gillespied(LV,T=30,dt=0.1)
M1 = cbind(M1,out[,1])
}
a =matrix(rowMeans(M1))
lines(a, lwd="1.5", col = cl[i/25])
}
}
axis(side = 1, at = (0:30)*10 , labels = 0:30)
legend("topright", legend=c("0.005/0.5", "0.005/1","0.005/1.5","0.005/2", "0.01/0.5","0.01/1","0.01/1.5","0.01/2","0.015/0.5","0.015/1","0.015/1.5","0.015
/2","0.02/0.5","0.02/1", "0.02/1.5","0.02/2"), lty =c(rep(1)),
lwd=c(rep(1)),
ncol=3, title ="Value of th2/th1", col=cl[1:17], cex=0.4)
基本上它在同一个图上产生16条线,每条线是我改变变量时的平均值(th1,th2)。但是,我希望所有16个图都有独特的颜色,但我很难做到这一点,因为我在循环函数中有一个循环函数。
从我的代码中你可以看到,对于每个i我重复了4次以获得不同的k值,当我绘制这个时,我得到16个图,但只有4个颜色(即每个i值的颜色)。
我想知道我是否可以在这件事上得到一些帮助。该图表位于链接下方,因为我没有足够的声誉立即发布图表。感谢。
答案 0 :(得分:0)
这应该有效:
col = cl[i/25*4+k/25]
一些额外的评论:
您的示例无法重现
将函数置于循环之外
你的j循环似乎非常无效,你甚至没有j,尝试不同的方式。
16种颜色无济于事,眼睛无法在图表上区分超过6-8。尝试使用4种不同类型的线?
你也可以采用不优雅的方式制作一个新变量,每次添加一行时都会获得+1。