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

基于矢量的颜色图
EN

Stack Overflow用户
提问于 2014-01-09 20:46:25
回答 1查看 67关注 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

其中ID是z中的ID,但每天可以是不同的。

我已经为向量的每个元素分配了颜色。

代码语言: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 )绘制我的df,但到目前为止,我还无法将每个df中的ID值与z中的值联系起来。

下面是我的代码:

代码语言:javascript
复制
for (i in 1:length(mydf)){

  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 22:21:54

看起来您想要在z中找到df[[j]]$ID值的相应索引。这里有一个简单的方法。

代码语言:javascript
复制
Rgames> foo<-c('a','b','c','d')
Rgames> bar <- c('b','d','a')
Rgames> indmatch <- match(bar,foo) 
# As Roland pointed out, much better than "sapply(bar,function(j)which(foo==j))"

#b d a 
#2 4 1

因此,如果你接受这个输出,你可以用它作为你的颜色的索引:

col=cRamp(z)[indmatch]

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

https://stackoverflow.com/questions/21022377

复制
相关文章

相似问题

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