提高传单的性能

Improving Performance of a leaflet

我正在尝试在 Flexdashboard 上使用 Leaflet 绘制地图,输出:html。我有 50,000 个数据点需要绘制。我尝试使用 addCircleMarker(lng,lat),它在 Base R 中工作,但是当在 HTML 文件中生成输出时,地图的性能非常慢。我也尝试使用 leafletOptions(preferCanvas = TRUE) 但性能仍然很慢。

我还尝试使用不同的 library(leaflet.glify) 来提高性能,因为 leaflet.glify 可以处理大型数据集并使用 addGlifyPoints(data, color = cbind(0, 0, 0.1), group = "All cases") 绘制地图。但我无法在 HTML 输出中 运行 它。它为我提供了以下错误。

pandoc: Could not determine mime type for `/Library/Frameworks/R.framework/Versions/3.5/Resources/library/leaflet.glify/htmlwidgets/Leaflet.glify/src/shader/fragment/dot.glsl'
CallStack (from HasCallStack):
  error, called at src/Text/Pandoc/SelfContained.hs:156:35 in pandoc-1.19.2.1-JIeRA5EnQv74mk86CvVbbp:Text.Pandoc.SelfContained
Error: pandoc document conversion failed with error 1
Execution halted

请帮忙。

对于 leaflet.glify 你需要在你的 yaml 中设置 self_contained: false header:

---
title: "testing gl"
output: 
  flexdashboard::flex_dashboard:
    vertical_layout: fill
    self_contained: false
---

### Chart 1

```{r}
library(mapview)
library(leaflet)
library(leaflet.glify)
library(sf)

n = 1e5

df1 = data.frame(id = 1:n,
                 x = rnorm(n, 10, 3),
                 y = rnorm(n, 49, 1.8))

pts = st_as_sf(df1, coords = c("x", "y"), crs = 4326)

options(viewer = NULL) # view in browser

system.time({
  m = leaflet() %>%
    addProviderTiles(provider = providers$CartoDB.DarkMatter) %>%
    addGlifyPoints(data = pts, group = "pts") %>%
    addMouseCoordinates() %>%
    setView(lng = 10.5, lat = 49.5, zoom = 6) %>% 
    addLayersControl(overlayGroups = "pts")
})

m
```

### Chart 2

```{r}
plot(cars)
```