我試圖在繪制柵格資料時設定高程中斷,但它似乎只使用了我的兩種顏色而不是全部顏色。我有從 -5497 到 1413 的高程值,并且想對負高程(水)使用淺藍色到深藍色漸變,對于正高程(陸地)使用灰色到黑色漸變。
Acquired data from NOAA via marmap package
# RASTER BATHY DATA
# From NOAA using marmap package
library(marmap)
library(oce)
Library(raster)
library(ggplot2)
bathy <- getNOAA.bathy(-80, -70, 40, 32, resolution = 1,
keep = FALSE, antimeridian = FALSE, path = NULL)
bathy_r <- as.raster(bathy)
bathy_r <- as.data.frame(bathy_t, xy = TRUE)
b <- ggplot()
geom_raster(bathy_t, mapping = aes(x = x, y = y, fill = layer))
scale_color_gradientn(
colours = c("midnightblue", "skyblue1", "grey", "black"),
breaks = c(-5497,-2000, -0.1, 0.2, 1413))
b
生成的圖有效,但僅使用了午夜藍和天藍 1 配色方案,沒有出現灰色或黑色。
uj5u.com熱心網友回復:
由于您使用marmap的是下載測深資料,因此您不妨使用marmap繪制這些資料。如果您想使用ggplot2,可以使用一些方便的marmap功能:
library(marmap)
library(ggplot2)
bathy <- getNOAA.bathy(-80, -70, 40, 32, resolution = 1,
keep = FALSE, antimeridian = FALSE, path = NULL)
#> Querying NOAA database ...
#> This may take seconds to minutes, depending on grid size
#> Building bathy matrix ...
autoplot(bathy, geom = c("raster", "contour"))
scale_fill_etopo()

正如chemdork123所解釋的,您可以使用scale_fill_...()函式而不是scale_color_...()函式來選擇您想要的任何調色板。中提供了一些示例?marmap_autoplot()。
使用 時scale_fill_gradientn(),您不應該使用breaks將顏色調整為特定的深度/高度值,而是values使用。并且由于values需要一個介于 0 和 1 之間的數值向量,因此您可以使用scales::rescale(). 這是您指定的顏色的示例:
autoplot(bathy, geom = c("raster", "contour"))
scale_fill_gradientn(colours = c("midnightblue", "skyblue1",
"grey", "black"),
values = scales::rescale(c(min(bathy), -0.1,
0, max(bathy))))

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/416812.html
標籤:
