Добавить цвет градиента к полилинии в листовке R - PullRequest
0 голосов
/ 12 июня 2018

Кажется, я не могу найти способ сделать путь листовки градиентом, основанным на другой переменной.Для данного кадра данных, использующего пары lat / lng снизу:

df <- data.frame(lat = lat, lng = lng, var = c(1:25))

Таким образом, листовка должна выглядеть следующим образом:

leaflet() %>% 
addTiles() %>% 
      addPolylines(data = df, lng = ~lng, lat = ~lat, 
                   color = ~var)

Но это будет просто окрашивать весь путь в один и тот же цвет.

Даже если я это сделаю:

pal <- colorNumeric(
  palette = "Blues",
  domain = df$var)

leaflet() %>% 
    addTiles() %>% 
          addPolylines(data = df, lng = ~lng, lat = ~lat, 
                       color = ~pal(var))

Это тоже не работает.


Воспроизводимый пример:

df <- data.frame(lat = rnorm(40) * 2 + 13, 
                 lng = rnorm(40) + 48, 
                 var = c(1:40))

pal <- colorNumeric(
  palette = "Blues",
  domain = df$var)

leaflet() %>% 
  addTiles() %>% 
  addPolylines(data = df, lng = ~lng, lat = ~lat, 
               color = ~pal(var))

All same color lines

1 Ответ

0 голосов
/ 17 апреля 2019

Немного опоздал на вечеринку, но, как писал SymbolixAU, вам понадобится отдельная полилиния для каждой строки в наборе данных.Полный пример ниже:

library(leaflet)
library(dplyr)
library(grDevices)

set.seed(1234)
df <- data.frame(lat = rnorm(40) * 2 + 13, 
                 lng = rnorm(40) + 48, 
                 var = c(1:40))

gradientFunction <- colorRampPalette(c("white", "blue"))
colorGradient <- gradientFunction(dim(df)[1])

df1 <- df %>%
  mutate(nextLat = lead(lat),
         nextLng = lead(lng),
         color = colorGradient
         )

gradient_map <- leaflet() %>% 
  addTiles()

for (i in 1:nrow(df1)) {
  gradient_map <- addPolylines(map = gradient_map,
                               data = df1, 
                               lng = as.numeric(df1[i, c('lng', 'nextLng')]), 
                               lat = as.numeric(df1[i, c('lat', 'nextLat')]), 
                               color = as.character(df1[i, c('color')])
  )
}

gradient_map

Screenshot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...