Вне растровой цветовой шкалы в растре
У меня есть растр, и я хочу построить его, используя image()
, До сих пор я строил растр со своей собственной цветовой шкалой col
,
## read the libraries
library(raster)
library(fields)
library(grDevices)
##random raster object
set.seed(1)
r <- raster(ncol=5, nrow=5)
r[] <- rnorm(n=ncell(r),mean=2)
col = colorRampPalette(c("darkred","red","lightskyblue","blue","blue4"))(20)
image(r, xaxs="i", yaxs="i", col= rev(col))
Это выглядит как
Теперь я хочу построить все значения выше значения 2 как "затемненные" (исходный цвет из моей цветовой шкалы)
Я нашел похожий пост и попробовал то же самое
zlim=2
newcol = ifelse(raster(r) >= zlim,"darkred",col)
image(r, xaxs="i", yaxs="i", col= newcol)
Тем не менее, я получил сообщение об ошибке. Было бы полезно, если кто-нибудь может помочь мне с этим.
1 ответ
Ммм... если ты не понимаешь col
работает, я бы не стал играть с ним, как вы пытаетесь это сделать (вы на самом деле намереваетесь изменить используемую цветовую гамму, и это может привести к непредвиденным результатам).
Кстати, ваша ошибка, вероятно, происходит от использования raster(r) >= zlim
вместо r[] >= zlim
(но, как уже упоминалось, даже если это исправить, ваш результат не будет правильным).
Мне кажется, мне проще и прозрачнее вместо этого построить новый растр поверх исходного (add=True
) с одним значением выше порогового значения (здесь, 1, где растр>=2) и определенным цветом (здесь, желтым, чтобы сделать его видимым, но вы можете адаптировать) и NA в другом месте (так, чтобы оригинальный растр был виден прозрачностью):
library(raster)
# Your example
set.seed(1)
r <- raster(ncol=5, nrow=5)
r[] <- rnorm(n=ncell(r),mean=2)
col = colorRampPalette(c("darkred","red","lightskyblue","blue","blue4"))(20)
par(mfrow = c(1,2))
image(r, xaxs="i", yaxs="i", col= rev(col), main='Original')
# build a new raster with 1 where r>=2 and NA elsewhere
newr = r
newr[] = ifelse(newr[] >= 2, 1, NA)
image(r, xaxs="i", yaxs="i", col= rev(col), main='Vals >=2 in yellow')
image(newr, col= "yellow", add=T)