首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找到轮廓图并突出显示90百分位数?

如何找到轮廓图并突出显示90百分位数?
EN

Stack Overflow用户
提问于 2022-04-03 15:04:42
回答 1查看 127关注 0票数 1

我有一个光栅图像,其值从1到10。我想找到我的栅格数据的90百分位数。并需要通过高亮显示有90个百分位数的区域来找到等高线图。我想要我的光栅数据的数字附在下面。我正在R.

代码语言:javascript
复制
   library(raster)
   library(cartography)
   library(sf)
   library(SpatialPosition)

   r <- raster("E:/data.tif", package="raster")
   plot(r)
   contour(r, add=TRUE)

我得到了这种类型的图像,但我想要一个阴影的(右侧)。帮助制作这张照片将是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-03 15:55:59

显然,没有您的数据,但我们可以这样做一个例子光栅:

代码语言:javascript
复制
r <- raster(t(volcano[,ncol(volcano):1]))

从现在开始,下面的代码也应该与您自己的光栅一起工作。我们可以得到数据的90厘米如下:

代码语言:javascript
复制
centile90 <- quantile(r[], 0.9)

现在,让我们将光栅转换为x,y,z数据帧:

代码语言:javascript
复制
df <- as.data.frame(as(r, "SpatialPixelsDataFrame"))
colnames(df) <- c("value", "x", "y")

我们可以使用功能丰富的ggplot2库来绘制数据。我们将绘制成一个填充的等高线图,并在90厘米处添加一个明亮的绿色轮廓:

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71727088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档