单张颜色分位数的“断裂”不是唯一的

时间:2019-01-21 05:18:31

标签: r shiny leaflet

我使用shinyleaflet处理一些数据,但遇到一个似乎在这里和那里突然出现的问题,但是我找不到解决方案或实现我发现的部分

让我们使用

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,标签= FALSE,include.lowest =   是的,:“中断”不是唯一的

我找到了一些GitHub comments here,但很难将其实施为可行的解决方案。

我需要某种方法来解决此问题,因为我无法事先确定有多少个垃圾箱可以工作。

2 个答案:

答案 0 :(得分:0)

下面是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)

答案 1 :(得分:-1)

我不得不在继承的二手代码中处理这个问题,尽管在我自己的代码中,是事先获得分位数后调用了colorBin。

我通过复制colorBin的源代码制作了一个新函数,使它起作用,唯一的变化是用.bincode()替换了cut()(并删除了它的label = FALSE参数)。位于同一楼层的分位数将具有相同的颜色,此后我再也没有遇到任何问题。