R在循环中使每个图形成唯一的颜色

时间:2017-11-24 15:28:45

标签: r loops graph

注意:如果您想重复我的代码,您需要从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值的颜色)。

我想知道我是否可以在这件事上得到一些帮助。该图表位于链接下方,因为我没有足够的声誉立即发布图表。感谢。

图:https://gyazo.com/da5b83f8bc04a3437557b292e19e8643

1 个答案:

答案 0 :(得分:0)

这应该有效:

 col = cl[i/25*4+k/25]

一些额外的评论:

  • 您的示例无法重现

  • 将函数置于循环之外

  • 你的j循环似乎非常无效,你甚至没有j,尝试不同的方式。

  • 16种颜色无济于事,眼睛无法在图表上区分超过6-8。尝试使用4种不同类型的线?

  • 你也可以采用不优雅的方式制作一个新变量,每次添加一行时都会获得+1。