R Leaflet: добавьте ползунок диапазона для маркеров фильтра без блеска - PullRequest
1 голос
/ 11 июля 2020

У меня есть набор данных, подобный приведенному ниже. Есть ли способ без блестящего (например, любого кода javascript или подключаемых модулей листовок) добавить ползунок диапазона для фильтрации точек на основе значений в столбце (например, переменной даты)? Что-то вроде кода ниже с ожидаемым результатом, аналогичным изображению ниже. Опять же, мне нужна эта функциональность без использования shiny.

data <- data.frame(id = c(1,2,3,4,5),
                   lat= c(50.9, 50.8, 50.5, 50.5, 51),
                   lon = c(-0.7, -0.92, -1, -0.8, -0.9),
                   date = c("2020-06-01", "2020-05-07", "2020-03-24", "2020-04-01", "2020-05-26"))

data %>%
  leaflet() %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addMarkers(lat=~lat, lng=~lon) %>%
  addRangeSlider(~date)

Ожидаемый формат вывода:

введите описание изображения здесь

1 Ответ

1 голос
/ 12 июля 2020

На основе комментария @ user2554330, вот решение crosstalk.

---
title: "crossover test"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library( crosstalk )
library( leaflet )
library( dplyr )
```

```{r load data }
data <- data.frame(id = c(1,2,3,4,5),
                   lat= c(50.9, 50.8, 50.5, 50.5, 51),
                   lon = c(-0.7, -0.92, -1, -0.8, -0.9),
                   date = c("2020-06-01", "2020-05-07", "2020-03-24", "2020-04-01", "2020-05-26"))

data <- data %>% dplyr::mutate( date2 = as.numeric( as.Date( date ) ),
                                date3 = as.Date( date )
                                )
```

```{r maak shared data object}
shared_data <- SharedData$new( data )
```

```{r genereer output}
filter_slider("date", "Date", shared_data, ~date3, width = "100%")
leaflet(shared_data, width = "100%", height = 800) %>%
  leaflet::addTiles() %>%
  leaflet::addMarkers() 
```

введите описание изображения здесь

...