我有一個包含 4 個柵格的柵格堆疊,并創建了一個柵格,每個單元格顯示 4 個圖層中的最高值,如下所示:
library(raster)
stack_raster <- list()
var_name <- c("tmax","tmin","drought","flood")
for(i in seq_along(var_name)){
var_ref <- var_name[i]
r <- raster(ncol=10, nrow=10)
names(r) <- var_ref
set.seed(i)
values(r) <- sample(100)
stack_raster[[i]] <- r
}
s <- raster::stack(stack_raster)
max_raster <- whiches.max(s)
plot(max_raster)

但是,在圖例中,我不想顯示值,而是想顯示對該值有貢獻的實際柵格的名稱。我怎樣才能創建這樣的地圖?
uj5u.com熱心網友回復:
你需要which.max(s)而不是whiches.max(s). 然后,要繪制,最簡單的事情可能是melt將柵格放入資料框中并將標簽分配給value列并使用或ggplot繪制結果geom_tilegeom_raster
max_raster <- which.max(s)
df <- reshape2::melt(as.matrix(max_raster))
df$value <- factor(var_name[df$value], var_name)
library(ggplot2)
ggplot(df, aes(Var2, Var1, fill = value))
geom_tile()
scale_y_reverse()
coord_equal()
scale_fill_brewer(palette = 'Set1')
theme_light()

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/462749.html
上一篇:如何減少ggplot中geom_point()之間的相對距離
下一篇:如何創建函式來為每列生成圖
