R 是否将带有底图的tmap保存为图像?

R 是否将带有底图的tmap保存为图像?,r,tmap,R,Tmap,我使用tmap在R中创建了一个地图,带有一个底图,并希望将其保存为图像 每当我使用tmap_save将其保存为.png时,我就会丢失底图 这大概是因为底图在打印模式下不可见,而仅在查看模式下可见 有没有一种好方法可以将地图和底图一起保存为图像 我有一个解决方法,首先将其保存为HTML,但这不是一个很好的解决方案。我在尝试创建静态映射时遇到了类似的问题。我发现tmaptools::read_osm函数似乎可以为我解决这个问题。以下是三张地图的可复制示例: 地图a看起来不错,直到你保存它 地图一点

我使用tmap在R中创建了一个地图,带有一个底图,并希望将其保存为图像

每当我使用tmap_save将其保存为.png时,我就会丢失底图

这大概是因为底图在打印模式下不可见,而仅在查看模式下可见

有没有一种好方法可以将地图和底图一起保存为图像


我有一个解决方法,首先将其保存为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")