我非常喜欢ggplot2
的外观,并经常使用它们来显示栅格数据(例如,随时间步长变化的面对于时变的降水场非常有用)。
但是,我仍然想知道是否可以容易地将连续栅格值合并到离散的容器中,并为每个容器分配一个单色的,该颜色显示在图例中(就像许多GIS系统一样)。
我尝试了guide = "legend"
选项的breaks
和scale_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/