基于颜色绘制矢量

时间:2014-01-09 12:15:37

标签: r

我有一个像这样的矢量z

z <- as.numeric(as.factor(c("A","B","C","D","E","F","G","H")))

并且对于不同的日期,数据框df就像这样

df[[1]]

    ID     LON     LAT

    A     1        1
    B     10        14
    C     12        13

df[[2]]

    ID     LON     LAT

    A     2         3
    B     11        18
    D     12        13

df[[3]]

    ID     LON     LAT

    A     13        1
    E     10        14
    D     12        13

其中IDz中的range01 <- function(x)(x-min(x))/diff(range(x)) rainbow(7) cRamp <- function(x){ cols <- colorRamp(rainbow(7))(range01(x)) apply(cols, 1, function(xt)rgb(xt[1], xt[2], xt[3], maxColorValue=255)) } ,但每天都可能不同。

我为矢量

的每个元素指定了一种颜色
df

我想要做的是每天使用cRamp(z)颜色绘制ID,但我无法在每个df中链接z值与for (i in 1:length(myfiles)){ plot(df[[i]]$LON,df[[i]]$LAT, col = cRamp(z)) map(add=T,col="saddlebrown",interior = FALSE) legend("topleft", legend=c(unique(df[[i]]$ID)), col=cRamp(z)) }

中的一个

这是我的代码

ID

但是例如A {{1}}每天都不一样!

非常感谢

1 个答案:

答案 0 :(得分:1)

也许是这样的:

z <- LETTERS[1:7]

df <- list(
  data.frame(ID=LETTERS[1:3],
             LON=c(1,10,12),
             LAT=c(1,14,13)),
  data.frame(ID=LETTERS[3:5],
             LON=c(2,11,18),
             LAT=c(2,9,20))
  )


layout(t(1:2))
for (i in 1:2){  
  plot(df[[i]]$LON, df[[i]]$LAT, 
       col = rainbow(length(z))[match(df[[i]]$ID,z)], 
       pch=16)
  legend("topleft", 
         legend=z, 
         col=rainbow(length(z)),
         pch=16)
}

enter image description here