[英]How to ssplot or ggplot a categorical raster
我知道這個問題的變體已經存在,但我仍然被卡住:如何使用 sppplot 或 ggplot 在 R 中繪制柵格的特定分類級別?
現在我有一個保存土壤鋅值的柵格層,稱為 zn。 以下是信息:
class : RasterLayer
dimensions : 1308, 3188, 4169904 (nrow, ncol, ncell)
resolution : 250, 250 (x, y)
extent : -178002.4, 618997.6, 2914810, 3241810 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=utm +zone=45 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
我可以使用以下代碼繪制該變量以及 npadmin1 shapefile 中保存的管理大綱:
spplot(zn, scales = list(draw = FALSE),
col.regions = terrain.colors(100)) +
layer(sp.polygons(npadmin1, lwd = 1))
但我也想以 4 種顏色繪制 4 個柵格值級別:0-.5、.5-1、1-1.5、>1.5。 然后我想讓傳說說“低”“中”,“高”,“非常高”。 沒有色條。 我知道那里有類似的問題,但是(a)我似乎根本無法讓 gplot 工作,並且(b)我不知道如何在 spplot 中做到這一點。 老實說,我對 spplot、ggplot 和/或 levelsplot 的了解還不夠,不知道什么時候更適合使用它們。
我已經知道下面的 2 個鏈接......仍然無法弄清楚。
正如我在評論中所說:重新分類,添加柵格屬性表並使用levelplot()
繪圖:
library(raster)
# Reproducible example
r <- raster()
r[] <- runif(ncell(r), min = 0, max = 2)
# Reclassify
r <- reclassify(r, c(0, 0.5, 1,
0.5, 1, 2,
1, 1.5, 3,
1.5,Inf,4))
# View
plot(r)
# Values as factor
r <- as.factor(r)
# Extract attribute table
rat <- levels(r)[[1]]
# Set custom breaks
rat[["zn"]] <- c("low", "medium", "high", "very high")
# Add back RAT
levels(r) <- rat
# Plot
rasterVis::levelplot(r)
這是一個ggplot2
解決方案:
library(raster)
library(ggplot2)
library(dplyr)
# Reproducible example
r <- raster()
r[] <- runif(ncell(r), min = 0, max = 2)
# Reclassify
r <- reclassify(r, c(0, 0.5, 1,
0.5, 1, 2,
1, 1.5, 3,
1.5,Inf,4))
r_df <- as.data.frame(r, xy = TRUE) %>%
mutate(layer = factor(layer))
# View
ggplot() +
geom_raster(data = r_df, aes(x = x, y = y, fill = layer)) +
scale_fill_manual(values = viridis::viridis(4), breaks = 1:4,
labels = c("low", "medium", "high", "very high"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.