geom_raster() 在地图上产生一个白色的表面

问题描述

我正在尝试在地理地图上绘制热图以显示变量的地理分布。最低限度的工作代码,带有荒谬的数据,如下:

library(ggmap)
library(osmdata)
Box <- c(left = 2.075,bottom = 41.325,right = 2.25,top = 41.47)
map <- get_stamenmap(bBox = Box,maptype = "terrain-lines",zoom = 13)

lon_grid <- seq(2.075,2.25,length.out = 30)
lat_grid <- seq(41.325,41.47,length.out = 30)
grid <- expand.grid(lon_grid,lat_grid)
z <- c(rep(NA,30^2/2),rnorm(30^2/2))
dataset <- cbind(grid,z)

ggmap(map) ### Plot 1

ggmap(map) + ### Plot 2
  geom_raster(data = dataset,aes(x = Var1,y = Var2,fill = z),alpha = 0.5,interpolate = TRUE) +
  scale_fill_viridis_c(option = "magma",na.value = "transparent") +
  coord_equal()

第一张地图看起来很完美:整洁、干净、线条清晰。

First Map

第二个添加了 geom_raster 层,看起来(除了更宽)有点模糊,不是那么清晰。看到 geom_raster 线在地图顶部添加一个白色图层(如果仔细观察,它甚至没有完全覆盖它)。这绝对很糟糕,我想删除它,或者换句话说,当 geom_raster 生成的图块采用 NA 值时,我希望它采用“透明”颜色。

Second Map

有什么想法吗?

解决方法

如果我理解正确的话,光栅中的 NA 似乎不是完全透明的。看看在 scale_fill_viridis_c 中更改为 na.value = NA 是否符合您的要求。

library(ggmap)
library(osmdata)
box <- c(left = 2.075,bottom = 41.325,right = 2.25,top = 41.47)
map <- get_stamenmap(bbox = box,maptype = "terrain-lines",zoom = 13)

lon_grid <- seq(2.075,2.25,length.out = 30)
lat_grid <- seq(41.325,41.47,length.out = 30)
grid <- expand.grid(lon_grid,lat_grid)
z <- c(rep(NA,30^2/2),rnorm(30^2/2))
 <- cbind(grid,z)

ggmap(map) + ### Plot 2
  geom_raster(data = dataset,aes(x = Var1,y = Var2,fill = z),alpha = 0.5,interpolate = TRUE) +
  scale_fill_viridis_c(option = "magma",na.value = NA) +
  coord_equal()

输出结果如下: enter image description here