如何找到等高线图并以 90 个百分位数突出显示?
How to find the contour graph and highlighted with 90 percentiles?
我有一张栅格图像,其值范围为 1 到 10。
我想找到我的栅格数据的 90 个百分点。并且需要通过突出显示具有 90 个百分位数的区域来找到等高线图。我想要我的栅格数据的数字附在下面。我正在 R 中进行分析。
library(raster)
library(cartography)
library(sf)
library(SpatialPosition)
r <- raster("E:/data.tif", package="raster")
plot(r)
contour(r, add=TRUE)
我得到了这种类型的图像,但我想要带有阴影的图像(右侧)。帮助制作这张照片将不胜感激。
显然,没有您的数据,但我们可以制作一个这样的栅格示例:
r <- raster(t(volcano[,ncol(volcano):1]))
从现在开始,以下代码也应该适用于您自己的栅格。我们可以像这样获得数据的第 90 个百分位数:
centile90 <- quantile(r[], 0.9)
现在让我们将栅格转换为 x、y、z 数据框:
df <- as.data.frame(as(r, "SpatialPixelsDataFrame"))
colnames(df) <- c("value", "x", "y")
我们可以使用feature-rich ggplot2
库来绘制数据。我们将绘制为填充等高线图,并在第 90 个百分位数处添加亮绿色等高线:
library(ggplot2)
ggplot(df, aes(x, y, z = value)) +
geom_contour_filled(bins = 10) +
geom_contour(breaks = centile90, colour = "green",
size = 2) +
scale_fill_manual(values = hcl.colors(10, "YlOrRd", rev = TRUE)) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
theme_classic() +
theme(legend.position = "none")
我有一张栅格图像,其值范围为 1 到 10。 我想找到我的栅格数据的 90 个百分点。并且需要通过突出显示具有 90 个百分位数的区域来找到等高线图。我想要我的栅格数据的数字附在下面。我正在 R 中进行分析。
library(raster)
library(cartography)
library(sf)
library(SpatialPosition)
r <- raster("E:/data.tif", package="raster")
plot(r)
contour(r, add=TRUE)
我得到了这种类型的图像,但我想要带有阴影的图像(右侧)。帮助制作这张照片将不胜感激。
显然,没有您的数据,但我们可以制作一个这样的栅格示例:
r <- raster(t(volcano[,ncol(volcano):1]))
从现在开始,以下代码也应该适用于您自己的栅格。我们可以像这样获得数据的第 90 个百分位数:
centile90 <- quantile(r[], 0.9)
现在让我们将栅格转换为 x、y、z 数据框:
df <- as.data.frame(as(r, "SpatialPixelsDataFrame"))
colnames(df) <- c("value", "x", "y")
我们可以使用feature-rich ggplot2
库来绘制数据。我们将绘制为填充等高线图,并在第 90 个百分位数处添加亮绿色等高线:
library(ggplot2)
ggplot(df, aes(x, y, z = value)) +
geom_contour_filled(bins = 10) +
geom_contour(breaks = centile90, colour = "green",
size = 2) +
scale_fill_manual(values = hcl.colors(10, "YlOrRd", rev = TRUE)) +
scale_x_continuous(expand = c(0, 0)) +
scale_y_continuous(expand = c(0, 0)) +
theme_classic() +
theme(legend.position = "none")