我使用
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 评论,但很难将其实施到工作解决方案中。
我需要某种方法来解决这个问题,因为我无法事先确定有多少垃圾箱可以工作。
按照 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)
我不得不在我继承的二手代码中处理这个问题,尽管在我的代码中,它是在事先获取分位数后调用 colorBin 的。
我通过复制 colorBin 的源代码创建一个新函数来使其工作,唯一的更改是将 cut() 替换为 .bincode() (并删除其 label = FALSE 参数)。具有相同楼层的分位数将获得相同的颜色,从那以后我就没有遇到任何问题。