我在尝试创建静态地图时遇到了类似的问题。我发现 tmaptools::read_osm 函数似乎为我解决了这个问题。这是三个地图的可重现示例:
- map_a 看起来不错,直到你保存它
- map_b 一点也不好看
- map_c 看起来不错,即使已保存
在交互式视图中创建示例地图。但是在保存的文件中,底图没有出现。
library(tmaptools)
library(tmap)
data(metro)
tmap_mode("view")
map_a <- tm_basemap("OpenStreetMap.Mapnik") +
tm_shape(metro) +
tm_bubbles(size = "pop2020", col = "red")
map_a
tmap_save(map_a, filename="map_a.png")
尝试创建一个类似地块的地图,但是底图根本不出现,而且红点在没有地图的情况下浮动。
tmap_mode("plot")
map_b <- tm_basemap("OpenStreetMap.Mapnik") +
tm_shape(metro) +
tm_bubbles(size = "pop2020", col = "red")
map_b
tmap_save(map_b, filename="map_b.png")
这里有一个解决方案:使用 read_osm。底图出现并可以保存。
c_osm <- tmaptools::read_osm(bb(metro), ext = 1.05)
map_c <- tm_shape(c_osm) +
tm_rgb() +
tm_shape(metro) +
tm_bubbles(size = "pop2020", col = "red")
map_c
tmap_save(map_c, filename="map_c.png")