传单映射到静态并保存(pdf格式)[R]

传单映射到静态并保存(pdf格式)[R],r,pdf,leaflet,maps,R,Pdf,Leaflet,Maps,如何将传单地图转换为静态绘图,然后将其保存为pdf?, 我已经创建了一个超过150 MB的大型传单地图,使用mapshot无法工作,因为它非常大。我认为把它转换成静态图然后保存比较合适 我举了一个例子: library(leaflet) library(tidyverse) URL2 <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_FRA_2_sp.rds" data2 <- readRDS(url(URL2)) U

如何将传单地图转换为静态绘图,然后将其保存为pdf?, 我已经创建了一个超过150 MB的大型传单地图,使用
mapshot
无法工作,因为它非常大。我认为把它转换成静态图然后保存比较合适

我举了一个例子:

library(leaflet)
library(tidyverse)

URL2 <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_FRA_2_sp.rds"
data2 <- readRDS(url(URL2))


URL3 <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_ESP_2_sp.rds"
data3 <- readRDS(url(URL3))

URL4 <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_PRT_2_sp.rds"
data4 <- readRDS(url(URL4))

URL5 <- "https://biogeo.ucdavis.edu/data/gadm3.6/Rsp/gadm36_GBR_2_sp.rds"
data5 <- readRDS(url(URL5))

random_long_lat <- 
  data.frame(
    long = sample(runif(300, min = -2.5, max = 15.99), replace = F),
    lat = sample(runif(300, min = 42.69, max = 59.75), replace = F)
  )

all <- rbind(data2, data3, data4, data5)
all@data <- 
  all@data %>% 
  mutate(counts = rnorm(nrow(all), 100, sd = 20))

cuts <- c(0, 5, 20, 40, 80, 150, max(all@data$counts))
cuts <- colorBin("Greens", domain = all$counts, bins = cuts)

m <- 
  leaflet() %>% 
  addProviderTiles("CartoDB.Positron") %>% 
  addPolygons(data=all, stroke = TRUE, color = "white", weight="", smoothFactor = 0.95, 
              fillOpacity = 0.65, fillColor = ~cuts(all$counts)) %>% 
  addLegend(pal = cuts, 
            values = all$counts,
            labFormat = labelFormat(suffix = " "),
            opacity = 0.85, title = "How many point were counted in each region", position = "topright")

速度非常慢,保存超过100MB的地图时通常会返回错误。

请查看
webshot
-包。。它支持将传单截图保存为pdf。。过程:首先使用
htmltools::savewidget()
将传单保存到html文件,然后使用
webshot
对保存的html文件制作电子屏幕截图..和
mapview::mapshot()
可以在不首先保存传单对象的情况下执行上述操作……正如我所提到的,这两种方法都非常缓慢,通常不会完成并返回错误。我已成功使用该软件包。它说明了如何在
自述文件中截图。这可能会更好,因为不需要创建独立的
.html
。然而,它只会让你半途而废,因为我认为它不支持直接保存到
.pdf
。您需要在之后转换自己,可能需要使用pandoc或
library(magick)
@TimSalabim谢谢您,您能给出您的想法作为答案吗。
library(mapview)
mapshot(m, file = "maps.pdf")