如何根据 R 中的 ID 连接和着色线条?

问题描述

我想用线连接点,还想根据 ID 为线着色。我可以通过以下示例总结我的尝试:

set.seed(123)
data <- array(runif(100*15,1),dim=c(3,5,100))

id <- sample(1:4,100,replace = TRUE)

plot(c(0,100),c(-0.2,2),type="n",ylab="",xlab="")
for ( i in 1:3){
  for (j in 1:1){
    for( k in 1:4){
      indx<- which(id==k)
      points((1:100)[indx],0.2*data[i,j,indx] +0.15*(i==2)+ 0.3*(i==3),col=if(k==1){"red"}else if(
               k==2) { "green3" } else if (k==3){"brown"} else {"blue"},pch=20,cex=0.8)
      
    }
    lines((1:100),]+0.15*(i==2)+ 0.3*(i==3),col="grey",lty=i)
  }
  
}

这段代码绘制了这些点,然后我用一条灰线将这些点连接起来。如您所见,很难看到/观察到从 k=1 到 k=2 的转换,尤其是当样本量较大时。因此,我删除了点并只想包含线条。当我尝试以下代码时;它只在 k=4 时给我线。

plot(c(0,xlab="")
for ( i in 1:3){
  for (j in 1:1){
    for( k in 1:4){
      indx<- which(id==k)
    }
    lines((1:100)[indx],indx]+0.15*(i==2)+ 0.3*(i==3),col=k,lty=i)
  }
  
}

我知道为什么我会得到这个,因为它覆盖了以前的 k 值,我需要将 lines() 函数放在“k”的 for 循环中。当我使用以下代码尝试此操作时,每个“i”都会得到四条彩色线,但这也不是我想要的。有没有办法根据 id 连接和着色线条?谢谢。

plot(c(0,xlab="")
for ( i in 1:3){
  for (j in 1:1){
    for( k in 1:4){
      indx<- which(id==k)
      lines((1:100)[indx],lty=i)
    }
    
  }
  
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)