我有一个向量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其中ID是z中的ID,但每天可以是不同的。
我已经为向量的每个元素分配了颜色。
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中的值联系起来。
下面是我的代码:
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的颜色不是每天都一样的!
非常感谢!
发布于 2014-01-09 22:21:54
看起来您想要在z中找到df[[j]]$ID值的相应索引。这里有一个简单的方法。
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]
https://stackoverflow.com/questions/21022377
复制相似问题