r - ggplot - 在不同颜色范围内映射低于和高于阈值的值

标签 r ggplot2 raster r-raster legend-properties

在下面的示例中,我想在蓝色配色方案(从最接近 100 的浅蓝色到最大值的深蓝色)中为高于 100 的值着色,在暖色范围(从黄色开始)中为低于 100 的值着色最接近 100 的最小值为红色)。请参阅下面的颜色范围示例。有人可以帮助我吗?我尝试了几种不同的方法(包括下面的方法)但没有成功。非常感谢!

enter image description here

 #library
    library(raster)
    library(ggplot2)
    library(maptools)
    data("wrld_simpl")

    #sample raster
    r <- raster(ncol=36, nrow=18)
    r[] <- (-ncell(r)/2+1):(ncell(r)/2)
    plot(r)

    var_df <- as.data.frame(rasterToPoints(r))

    #plotting
    p <- ggplot() 
    p <- p + geom_raster(data = var_df , aes(x = x, y = y, fill = layer))
    p <- p + coord_equal() 
    p <- p + scale_fill_gradient2(low = muted("red"), mid = "white",
                                  high = muted("blue"), midpoint = 100)
    p

最佳答案

嗯...那么,您真的希望它在 layer=100 处准确拆分吗?

如果是,

#plotting
p <- ggplot() 
p <- p + geom_raster(data = var_df , aes(x = x, y = y, fill = layer))
p <- p + coord_equal()
p <- p + scale_fill_gradientn(
  colours=c("red", "yellow", "skyblue", "darkblue"),
  values = rescale(c(min(var_df$layer),
                     100,
                     100.01,
                     max(var_df$layer))))

enter image description here

关于r - ggplot - 在不同颜色范围内映射低于和高于阈值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53661843/

相关文章:

r - 带有 ggplot 的多面热图,用于 X 的选定部分,并带有附加文本标签

r - 用ggplot绘制多个正方形

r - 如何在 R 中堆叠光栅文件?

r - 合并空间点并使用插值来填补空白

java - 获取图像边界的程序

r - 单击按钮在 Shiny 表中添加一个新的空行

r - 使用滚动时间间隔来计算 R 和 dplyr 中的行数

r - 如何将基于时间的不等长数据帧与R中的缓冲间隔合并?

r - 用置信区间在 ggplot 中绘制月平均温度

r - 将分面包裹图上的 strip 标签移动到每个图的内部