我从sf包中制作了一些带有空间特性的地图,并使用ggpattern创建了一个条带填充。这对某些多边形很有效,但对那些在其中有洞的人(湖泊特征类中的岛屿)则不起作用。
最近,ggpattern包已经被更新为与带有洞的多边形一起工作(为此我很感激!),并且它不再为这些特性带来错误,但是现在模式填充对于所有功能(有和没有洞)都是错误的,因为它不再遵循多边形边界,而是填充围绕多边形的矩形。
下面是一个使用rnaturalearth包来展示我的意思的例子。
#devtools::install_github("coolbutuseless/ggpattern")
library(ggpattern)
library(rnaturalearth)
germany <- ne_countries(country='germany', returnclass='sf')
ggplot() + geom_sf_pattern(data = germany)这给了我这个结果。

下面是我的实际地图在此之前和之后的图片--使用不变的代码和数据,对没有漏洞的多边形进行ggpattern更新。
我已经查看了ggpattern页面,看看是否缺少需要更改的某些参数,但似乎找不到问题。我对R比较陌生,所以我可能忽略了一些东西。如果能帮我找到正确的方向,我将不胜感激!
发布于 2022-01-24 22:26:55
请将您的{ggpattern}和{gridpattern}包更新为使用remotes::install_github(coolbutuseless/ggpattern)的最新(开发)版本。上周(2022年1月16日至20日),geom_sf_pattern()模式裁剪/掩蔽出现了一些问题。从理论上讲,它现在应该起作用了。您不需要使用不同的操作系统。
如果它仍然不起作用,那么可以尝试一些解决办法:
options(ggpattern_use_R4.1_features = FALSE)显式关闭(或打开)R4.1特性。通常这不应该是明确需要的,因为{gridpattern}可以猜测R4.1在活动图形设备中的支持.pdf()或ragg::agg_png() )来保存图像,而不是使用默认的交互式窗口设备。使用pdf/png查看器,当图像文件被重写时,它会自动刷新。发布于 2022-01-14 10:42:57
我也有同样的问题。如果你继续的话,它已经被报告了。然而,提出的解决方案对我不起作用。所以我建议你另一个解决方案。
devtools::install_github("statnmap/HatchedPolygons")
require(HatchedPolygons)
require(rnaturalearth)
ger <- st_as_sf(germany)
hatch <- hatched.SpatialPolygons(ger, density = 4, angle = 45)
hatch <- hatch %>% sf::st_set_crs(st_crs(germany))
ggplot(germany) +
geom_sf() +
geom_sf(data = hatch)

如果您想要特定的孵化区域,您应该首先创建所需的孵化多边形,然后将其剪辑到您的数据中,最后将其绘制为sf对象。
https://stackoverflow.com/questions/70394227
复制相似问题