簡體   English   中英

如何 ssplot 或 ggplot 分類柵格

[英]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 個鏈接......仍然無法弄清楚。

具有分類數據的柵格地圖圖例

在 R 中使用 ggplot2 繪制分箱類中的連續柵格數據

正如我在評論中所說:重新分類,添加柵格屬性表並使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM