R 是否将带有底图的tmap保存为图像?
我使用tmap在R中创建了一个地图,带有一个底图,并希望将其保存为图像 每当我使用tmap_save将其保存为.png时,我就会丢失底图 这大概是因为底图在打印模式下不可见,而仅在查看模式下可见 有没有一种好方法可以将地图和底图一起保存为图像R 是否将带有底图的tmap保存为图像?,r,tmap,R,Tmap,我使用tmap在R中创建了一个地图,带有一个底图,并希望将其保存为图像 每当我使用tmap_save将其保存为.png时,我就会丢失底图 这大概是因为底图在打印模式下不可见,而仅在查看模式下可见 有没有一种好方法可以将地图和底图一起保存为图像 我有一个解决方法,首先将其保存为HTML,但这不是一个很好的解决方案。我在尝试创建静态映射时遇到了类似的问题。我发现tmaptools::read_osm函数似乎可以为我解决这个问题。以下是三张地图的可复制示例: 地图a看起来不错,直到你保存它 地图一点
我有一个解决方法,首先将其保存为HTML,但这不是一个很好的解决方案。我在尝试创建静态映射时遇到了类似的问题。我发现tmaptools::read_osm函数似乎可以为我解决这个问题。以下是三张地图的可复制示例:
- 地图a看起来不错,直到你保存它
- 地图一点也不好看
- 地图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")
库(tmaptools)
图书馆(tmap)
数据(地铁)
tmap_模式(“视图”)
映射另一个选项是保存对象,然后使用中的mapshot()
函数将其保存为图像。下面是一个例子
library(mapview)
#May need this for mapshot to work
#webshot::install_phantomjs()
data("World")
map <- tm_basemap(leaflet::providers$Esri.WorldTopoMap) +
tm_shape(World) + tm_polygons(alpha = 0,border.col = "black", lwd = 2)
lf <- tmap_leaflet(map)
mapshot(lf, file = "world_map.png")
库(mapview)
#可能需要这个才能让地图快照正常工作
#webshot::安装_phantomjs()
数据(“世界”)
映射如果您提供一个我们可以访问的数据示例,我们将更容易提供帮助。我也遇到过类似的问题,但我最终使用了ggplot
进行绘图,并使用ggmap
获得底图。但是我会很感兴趣,如果它在tmap
中是可行的,我刚才运行了代码。我在第三个选项上遇到了一个错误,但通过在处理read_osm之前添加对“bb”的调用来解决了这个问题。除此之外,这些泡沫似乎正在破裂。我还尝试了@rm1104发布的解决方案中提供的mapshot()选项,它对我很有效。上一个解决方案很棒!
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")
library(mapview)
#May need this for mapshot to work
#webshot::install_phantomjs()
data("World")
map <- tm_basemap(leaflet::providers$Esri.WorldTopoMap) +
tm_shape(World) + tm_polygons(alpha = 0,border.col = "black", lwd = 2)
lf <- tmap_leaflet(map)
mapshot(lf, file = "world_map.png")