在Leaflet图例R中显示自然间隔

时间:2016-07-30 10:03:34

标签: r leaflet legend legend-properties

我一直试图寻找这个问题的答案,但却发现了这个问题:

{{3}}

但是这并不是我想要的,因为传单地图显示了我想要的休息但是当我尝试使用pal =将它们添加到图例时我得到了一个错误

我在R中使用了ClassInt包来查找数据中的jenks自然中断,如下所示:

[0,3]   (3,8]  (8,16] (16,32] (32,70] 
759     505     290     138      29 

然后使用findColours和RcolourBrewer包:

cols_code <- findColours(cols_classes, brewer.pal(5,"YlGnBu"))

当我在我的传单地图中使用它时,它可以正常工作并按我想要的方式按主题显示颜色:

leaflet() %>% 
addProviderTiles("CartoDB.Positron") %>%

 addPolygons(data = foo, 
          fillColor = cols_code, 
          fillOpacity = 0.9, 
          color = "white", 
          weight = 1)

但是当我尝试使用此对象添加图例时,我收到错误:

addLegend(pal = cols_code, 
        values = foo$bar,
        title = "title",
        labFormat = labelFormat(suffix = " things"),
        opacity = 0.9)

Error in if (type == "numeric") { : argument is of length zero 

我尝试使用传单colorBin和colorNumeric,但它们似乎不能识别我的休息时间,而是在图例和主题中覆盖自己的间隔。

欢迎提出任何建议,我希望尽可能避免将它们转换为一个因素,因为我可以看到findColours和colorBin函数都有附加到它们的调色板,但它似乎只是查找传单colorBins / numeric。

1 个答案:

答案 0 :(得分:2)

如果没有可重复的例子,要知道你想要什么并不容易。但试试:

pal2 <- leaflet::colorBin(palette = col.regions,
                          bins = length(at),
                          domain = at,
                          na.color = na.color)

其中col.regions是生成颜色的函数(例如,某些colorRampPaletteviridis),at是您的休息,而na.colorNA的某种颜色{1}}值。

然后你可以这样做:

leaflet::addLegend(map = m,
                   pal = pal2,
                   opacity = 1,
                   values = at,
                   title = "someTitle")

我们在 mapview 中使用它,以便我们可以:

mapview(breweries91, zcol = "founded", 
        at = seq(1400, 2300, 300), legend = TRUE)

您显然可以使用 mapview 来处理此问题。