【问题标题】:Leaflet colorQuantile 'breaks' are not unique传单 colorQuantile 'breaks' 不是唯一的
【发布时间】:2019-06-14 11:34:13
【问题描述】:

我使用 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, labels = FALSE, include.lowest = TRUE, : 'breaks' 不是唯一的

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

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

【问题讨论】:

    标签: r shiny leaflet


    【解决方案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)
    

    【讨论】:

    • 您好,感谢您的评论。我在上面使用过,但最终以pal(a) 将所有内容都作为一个颜色代码。我假设查看向量我应该至少有 2 个 bin,因此应该有 2 种不同的颜色?
    • pal(a) [1] "#F7FCB9" "#F7FCB9" "#F7FCB9" "#F7FCB9" "#F7FCB9" "#F7FCB9" "#F7FCB9" "#F7FCB9"
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-04
      • 2016-10-15
      • 1970-01-01
      • 2019-10-08
      • 2015-10-22
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多