Вне растровой цветовой шкалы в растре

У меня есть растр, и я хочу построить его, используя 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)

введите описание изображения здесь

Другие вопросы по тегам