gpt4 book ai didi

r - 用R中的ggplot2在合并的类中绘制连续栅格数据

转载 作者:行者123 更新时间:2023-12-04 11:23:55 24 4
gpt4 key购买 nike

我非常喜欢ggplot2的外观,并经常使用它们来显示栅格数据(例如,随时间步长变化的面对于时变的降水场非常有用)。

但是,我仍然想知道是否可以容易地将连续栅格值合并到离散的容器中,并为每个容器分配一个单色的,该颜色显示在图例中(就像许多GIS系统一样)。

我尝试了guide = "legend"选项的breaksscale_fill_gradient参数。但是,这些仅影响图形侧面的图例,但绘制的值仍是连续的。

library(ggplot2)
data <- data.frame(x=rep(seq(1:10),times = 10), y=rep(seq(1:10),each = 10), value = runif(100,-10,10))
ggplot(data = data, aes(x=x,y=y)) +
geom_raster(aes(fill = value)) +
coord_equal() +
scale_fill_gradient2(low = "darkred", mid = "white", high = "midnightblue",
guide = "legend", breaks = c(-8,-4,0,4,8))

我的问题主要是如何离散化 ggplot中绘制的数据,以便图的读者可以对颜色表示的值做出定量结论。

其次,如何仍可以使用以零或其他特定值为中心的发散调色板(类似于 scale_fill_gradient2)?

最佳答案

您应该使用raster包来处理栅格数据。这
包提供了一些与分类一起使用的功能
栅格。例如,您可以使用reclassify转换连续
文件放入离散的栅格中。下一个示例改编自
this question:

library(raster)

f <- system.file("external/test.grd", package="raster")
r <- raster(f)
r <- reclassify(r, c(0, 500, 1,
500, 2000, 2))

另一方面,如果您想使用 ggplot2函数, rasterVis包提供了 ggplot的简单包装,
RasterLayer对象一起使用:
library(rasterVis)

gplot(r) +
geom_raster(aes(fill = factor(value))) +
coord_equal()

定义自己的颜色,然后可以添加:
scale_fill_manual(values=c('red','green')))

关于r - 用R中的ggplot2在合并的类中绘制连续栅格数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25280763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com