首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于颜色图向量的

基于颜色图向量的
EN

Stack Overflow用户
提问于 2014-01-09 12:15:36
回答 1查看 149关注 0票数 0

我有一个像这样的向量z

代码语言:javascript
复制
z <- as.numeric(as.factor(c("A","B","C","D","E","F","G","H")))

在不同的日子里,像这样的数据帧df

代码语言:javascript
复制
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中的,但每天都可能有所不同。

我给向量的每个元素指定了颜色。

代码语言:javascript
复制
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))
} 

我想要做的是每天用cRamp(z)的颜色来绘制我的ID,但是我无法将每个df中的ID值与z中的那个联系起来。

这是我的密码

代码语言:javascript
复制
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的颜色并不是每天都一样!

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-09 13:13:27

也许是这样的:

代码语言:javascript
复制
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)
}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21019985

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档