传单颜色分位数“中断”并不唯一

问题描述 投票:0回答:2

我使用

shiny
leaflet
处理一些数据,并遇到了一个似乎到处都会出现的问题,但我找不到解决方案或实现我找到的部分

使用吧

library(leaflet)

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

向量

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, labels = FALSE, include.lowest = 中的错误 正确,:“休息”并不独特

我在这里找到了一些 GitHub 评论,但很难将其实施到工作解决方案中。

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

r shiny r-leaflet
2个回答
-1
投票

按照 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
投票

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

我通过复制 colorBin 的源代码创建一个新函数来使其工作,唯一的更改是将 cut() 替换为 .bincode() (并删除其 label = FALSE 参数)。具有相同楼层的分位数将获得相同的颜色,从那以后我就没有遇到任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.