Leaflet colorQuantile «перерывы» не являются уникальными - PullRequest
0 голосов
/ 21 января 2019

Я работаю над некоторыми данными с shiny и leaflet и сталкиваюсь с проблемой, которая, кажется, всплывает тут и там, но я не мог найти решение или реализовать фрагменты, которые я нашел

Позволяет использовать

library(leaflet)

a <- c(5,4,1,1,2,1,1,1)

vector a является результатом некоторого фильтра в приложении и может изменяться. Это работает, если значения хорошо распределены, но в приведенном выше примере приложение вылетает при использовании следующего

pal <- colorQuantile("YlGn", a, n = 5)

И с использованием

pal(a)

в

  leafletProxy("myMap", data = myData) %>%
      clearShapes() %>%
      addPolygons(data = theData,
                  fillColor = pal(a), 
                  fillOpacity = 0.8, 
                  color = "#BDBDC3", 
                  weight = 2,
                  popup = borough_popup)  

с

Ошибка в cut.default (x, binsToUse, tags = FALSE, include.lowest = ИСТИНА: «перерывы» не уникальны

Я нашел комментариев GitHub здесь , но изо всех сил пытаюсь внедрить его в рабочее решение.

Мне нужен какой-то способ обойти эту проблему, так как я не могу заранее определить, сколько лотков может работать.

Ответы [ 2 ]

0 голосов
/ 30 июля 2019

Мне приходилось иметь дело с этим в подержанном коде, который я унаследовал, хотя в моем это был вызов colorBin после получения квантилей заранее.

Я заставил его работать, создав новую функцию, скопировав исходный код colorBin, единственное изменение - замена cut () на .bincode () (и удаление аргумента label = FALSE). Квантили с тем же полом получат тот же цвет, и с тех пор я не сталкивался с какими-либо проблемами.

0 голосов
/ 21 января 2019

По примеру с github - вы пробовали это?

quantileNum <- 5

probs <- seq(0, 1, length.out = quantileNum + 1)
bins <- quantile(a, probs, na.rm = TRUE, names = FALSE)

while (length(unique(bins)) != length(bins)) {
 quantileNum <- quantileNum - 1
 probs <- seq(0, 1, length.out = quantileNum + 1)
 bins <- quantile(a, probs, na.rm = TRUE, names = FALSE)
}

pal <- colorBin("YlGn", bins = bins)
...