bea*_*ber 5 r knitr leaflet r-markdown
我意识到这在很大程度上违背了使用交互式leaflet地图的目的,但我正在写一本传统的纸质书籍,我想展示leafletR 的包装是如何工作的.我正在用LaTeX编写这本书并使用knitr.有没有办法让leaflet地图渲染为光栅图像,以便它可以包含在本书中?
这是一个最小的例子:
library(leaflet)
map <- leaflet() %>%
addTiles() %>%
addMarkers(lng = -77.03673, lat = 38.89761)
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试一个块,如:
<<>>=
map
@
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error in validateCssUnit(sizeInfo$width): "\maxwidth" is not a valid CSS unit
(e.g., "100%", "400px", "auto")
Run Code Online (Sandbox Code Playgroud)
尝试保存为PNG也不起作用:
<<>>=
png(filename = "test.png")
map
dev.off()
@
Run Code Online (Sandbox Code Playgroud)
map不继承ggplot,所以ggsave也不会.
有没有办法让这项工作?
关于如何将RStudio地图中的传单保存为png或jpg文件,最近有一个问题?.如果您不介意安装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")
Run Code Online (Sandbox Code Playgroud)
这里有一些LaTeX输出用于演示目的.如果有人感兴趣,可以从GitHub获得完整的.Rnw源文件.