Cách gán màu cho các giá trị raster cụ thể bằng R


9

Tôi đang sử dụng levelplotchức năng của rasterVisgói tuyệt vời để tạo một bản đồ có giá trị phân kỳ quanh 0. Tôi đang vẽ một tệp raster bằng bảng màu đỏ đến xanh, nhưng tôi đang cố gán giá trị xám cho các giá trị 0 trong bản đồ.

Cụ thể, tôi muốn tái tạo màu sắc của hình này:

nhập mô tả hình ảnh ở đây

Lưu ý rằng khi sử dụng thang màu đỏ đến màu xanh, nhưng giá trị 0 đã được tô màu bằng màu xám.

Hiện tại, bản đồ của tôi trông như thế này:nhập mô tả hình ảnh ở đây

Và đây là mã để sao chép nó (tệp có sẵn tại 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)

Làm cách nào tôi có thể gán màu xám cho tất cả các giá trị 0 trong bản đồ của mình ở trên?

Câu trả lời:


7

Bạn có thể xác định bảng màu của riêng bạn bằng cách kết hợp hai bảng màu được xác định trước và mong muốn màu xám của bạn như: [red bảng vàng cam] + [màu xám zero] + [blue bảng] . Để có giá trị 0 được căn chỉnh với màu xám, bạn phải sử dụng cùng số lượng màu ( n) cho các bảng màu được xác định trước.

Hãy thử mã nhận xét bên dưới:

# 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})))

âm mưu

Lưu ý rằng cốt truyện của bạn sẽ không giống như ví dụ con số bạn đã đăng vì raster của bạn có dữ liệu thưa thớt hơn với nhiều Nas


Cảm ơn vi đa trả lơi. Tôi nhận ra rằng vấn đề của tôi có lẽ là quá nhiều NA trên bản đồ. Hãy thử thêm myTheme$panel.background$col = 'grey70'sau myThemedòng của bạn và vẽ nó để xem kết quả. Rõ ràng bây giờ tôi cần phải thoát khỏi các khu vực NA quá mức xung quanh hình ảnh.
thiagigsoso

2
Không có gì! Lưu ý rằng 0giá trị khác với NAgiá trị. Ngoài ra chúng có ý nghĩa khác nhau. Bạn có thể gán cùng một màu cho cả hai, nhưng tôi nghĩ nó không phù hợp. Nếu bạn muốn có một raster kết tủa trông giống như con số bạn đã đăng (nhiều dữ liệu hơn), một đề xuất có thể cố gắng nội suy dữ liệu của bạn theo mô hình dự đoán thích hợp.
Guzmán
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.