R을 사용하여 특정 래스터 값에 색상을 할당하는 방법


9

나는 levelplot멋진 rasterVis패키지 의 기능을 사용하여 값이 0으로 갈라지는 맵을 만듭니다. 빨간색에서 파란색 팔레트를 사용하여 래스터 파일을 플로팅하고 있지만 맵에서 회색을 0으로 값을 할당하려고합니다.

특히이 그림의 색상을 재현하고 싶습니다.

여기에 이미지 설명을 입력하십시오

빨간색에서 파란색으로 스케일이 사용되지만 0 값은 회색으로 표시됩니다.

현재 내지도는 다음과 같습니다.여기에 이미지 설명을 입력하십시오

그리고 이것은 그것을 재현하는 코드입니다 ( https://www.dropbox.com/s/cypfdu1eaz2fuok/r.annual.tif?dl=0에있는 파일 ) :

# Load required packages
library(rasterVis)

# open file
r.annual <- raster("Downloads/r.annual.tif")

# Set color palette
myTheme=rasterTheme(region=brewer.pal('RdBu', n=11))

# Plot
levelplot(annual.mask, par.settings=myTheme, margin=F)

위의지도에서 0을 모두 회색으로 할당하려면 어떻게해야하나요?

답변:


7

사전 정의 된 두 개의 색상 팔레트와 원하는 회색 색상을 [빨간색 주황색 노란색 팔레트] + [제로 회색 색상] + [파란색 팔레트] 로 연결하여 고유 한 색상 팔레트를 정의 할 수 있습니다 . 회색으로 정렬 된 0 값을 얻으려면 n사전 정의 된 색상 팔레트에 대해 동일한 수의 색상 ( ) 을 사용해야합니다 .

아래 주석이 달린 코드를 사용해보십시오.

# Load libraries
library('rasterVis')

# open raster file
r.annual <- raster("r.annual.tif")

# Set color palette
zeroCol <-"#B3B3B3" # (gray color, same as your figure example)
reds <- rev(brewer.pal('YlOrRd', n = 7))
blues <- brewer.pal('Blues', n = 7)

myTheme <- rasterTheme(region = c(reds, zeroCol, blues))

# Plot
levelplot(r.annual, par.settings = myTheme, margin = FALSE, main = expression("Precipitation" ~ (mm ~ year^{-1})))

음모

래스터에 Nas가 많을수록 희소 데이터가 많으므로 플롯이 게시 한 그림 예제와는 다릅니다.


답장을 보내 주셔서 감사합니다. 내 문제가 아마도지도에 너무 많은 NA라는 것을 깨달았습니다. 라인 myTheme$panel.background$col = 'grey70'뒤에 추가 myTheme하고 결과를 보려면 플롯하십시오. 분명히 이미지 주위의 과도한 NA 영역을 제거해야합니다.
thiagoveloso

2
아니에요! 참고 0값이 다른 NA값. 또한 그들은 다른 의미를 가지고 있습니다. 둘 다에 같은 색을 지정할 수 있지만 적절하지 않다고 생각합니다. 게시 한 그림 (더 많은 데이터)과 같은 강수량 래스터를 원한다면 적절한 예측 모델에 따라 데이터를 보간하려고 할 수 있습니다.
Guzmán
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.