我试图在坐标系中绘制投影的栅格,该坐标系遵循地球曲率,就像大多数非WGS 84投影一样。问题是,地球仪包裹数据的地方不应绘制在地球之外。我知道ggplot不能绘制圆形/椭圆形图,但如何自动屏蔽或删除地球之外的数据?我必须绘制超过100张Map,我不能手动完成,特别是如果我想改变到一个不同的投影。
有an answer here,但它的hackish,似乎并不适用于每一种情况,有函数或包,以处理这个问题?我不认为R用户只绘制Map在WGS 84?我附加了一个文件和代码,以快速绘制Map。我不能使用xlim,因为它会削减一些部分的Map,因为边界不直。
#netcdf file
https://ufile.io/fy08x33d
library(terra);library(tidyterra)
r=rast('Beck_KG_V1_present_0p5.tif')
#background map
r[r==0]=NA
ggplot() +geom_spatraster(data=r)+scale_fill_viridis_c(na.value='transparent') +coord_sf(crs=st_crs("+proj=hatano"),expand=FALSE)
2条答案
按热度按时间i86rm4rw1#
有了这些数据
你能做到
这里有两个备选方案
首先使用自己的调色板和图例
使用文件附带的颜色:
6vl6ewon2#
这里我会选择Robert Hijman的一个选项,但是如果你想在ggplot中创建一个遮罩,你可以这样做: