在地理坐标之外,我想在城市地图上绘制简单的平原点并将输出保存为.png。我使用的是 Linux Ubuntu 22.04LTS。对于第一部分,我找到了一个非常简短且直接的
leaflet
解决方案。
library(leaflet); library(htmlwidgets); library(webshot)
m <- leaflet() %>%
addTiles("https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png") %>%
setView(-.12, 51.50, zoom=13)
m$x$options <- append(m$x$options, list("zoomControl" = FALSE))
m <- m %>%
addCircleMarkers(c(-.11, -.12, -.13), c(51.48, 51.52, 51.50),
radius=1, color="red")
m
但是,第二部分,保存 .png 失败。我尝试过这个解决方案,
saveWidget(m, "temp.html", selfcontained=TRUE)
webshot("temp.html", file="Rplot.png", cliprect="viewport")
但是 - 使用
phantomjs 2.1.1
- 它给了我这些错误:
Auto configuration failed
139740646049728:error:25066067:DSO support routines:DLFCN_LOAD:could not load the shared library:dso_dlfcn.c:185:filename(libproviders.so): libproviders.so: cannot open shared object file: No such file or directory
139740646049728:error:25070067:DSO support routines:DSO_load:could not load the shared library:dso_lib.c:244:
139740646049728:error:0E07506E:configuration file routines:MODULE_LOAD_DSO:error loading dso:conf_mod.c:285:module=providers, path=providers
139740646049728:error:0E076071:configuration file routines:MODULE_RUN:unknown module name:conf_mod.c:222:module=providers
Error in webshot("temp.html", file = "Rplot.png", cliprect = "viewport") :
webshot.js returned failure value: 1
In addition: Warning message:
In is.null(x) || is.na(x) : 'length(x) = 4 > 1' in coercion to 'logical(1)'
使用稍旧的版本
phantomjs 1.9.8
不会出现错误,但图像完全空白。我使用这些源在 Ubuntu 上安装 phantomjs
:1.9.8、2.1.1。我研究了这个answer,根据它你必须安装开发版本,但我没有发现它有用,因为我不知道phantomjs
的开发版本。
我不一定需要互动
leaflet
,但我觉得黑暗主题看起来很酷,并且符合夜间犯罪的研究主题。因此,如果静态解决方案看起来相似(如果它不使用 Google),我对静态解决方案持开放态度。
使用新包 webshot2,它使用 Chrome 或 Chromium 无头浏览器而不是 phantomjs。