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

标签 r ggplot2 gis raster

我非常喜欢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/

相关文章:

r - 在 R 中将路径/路线图编写为 GeoTiff

r - 根据中位数对箱形图进行排序

r - 将不同列的大数据文件合并为一个大文件

r - 如何从 .wav 文件中提取特定频率范围?

R - 分组条形图在组内排序

r - 绘图方式类似于 interaction.plot 和 ggplot2

java - 地理位置检索背后的概念

r - 将参数传递给 R Markdown

r - 定义因子时发出警告:不赞成重复使用因子水平

gis - OpenLayers 3 OSM-tile 和 Natural Earth 之间的差异