我意识到这在很大程度上违背了使用交互式leaflet
地图的目的,但我正在编写一本传统的纸质书籍,我想展示R的leaflet
包的工作原理。我在LaTeX中编写本书并使用knitr
进行渲染。有没有办法让leaflet
地图渲染为光栅图像,以便它可以包含在本书中?
这是一个最小的例子:
library(leaflet)
map <- leaflet() %>%
addTiles() %>%
addMarkers(lng = -77.03673, lat = 38.89761)
现在,如果我尝试一下像:
<<>>=
map
@
我收到此错误:
Error in validateCssUnit(sizeInfo$width): "\maxwidth" is not a valid CSS unit
(e.g., "100%", "400px", "auto")
尝试保存为PNG并不起作用:
<<>>=
png(filename = "test.png")
map
dev.off()
@
map
不会继承ggplot
,因此ggsave
也无法继续工作。
有没有办法让这项工作?
答案 0 :(得分:8)
How to save Leaflet in RStudio map as png or jpg file?最近有一个问题。如果您不介意安装PhantomJS,下面的代码可以帮助您从传单(或 mapview )地图创建静态图片。剩下要做的唯一事情就是不要在你的书中显示saveWidget
和webshot
代码,而是导入并显示由此创建的png文件。
## install 'webshot' package
library(devtools)
install_github("wch/webshot")
## load packages
library(leaflet)
library(htmlwidgets)
library(webshot)
## create map
m <- leaflet() %>%
addTiles() %>%
addMarkers(lng = -77.03673, lat = 38.89761)
## save html to png
saveWidget(m, "leaflet_map.html", selfcontained = FALSE)
webshot("leaflet_map.html", file = "leaflet_map.png",
cliprect = "viewport")
## optionally display image when using knitr
# p <- knitr::include_graphics("leaflet_map.png")
这是一些用于演示目的的LaTeX输出。如果有人感兴趣,可以从GitHub获得完整的.Rnw源文件。