2016-07-30 67 views
1

我試圖尋找一個答案,這個問題和碰到這個傳來:顯示自然的休息間隔

Manually adding legend values in leaflet

但是,這並不完全是我想爲單張地圖顯示不過,我想,當我嘗試用朋友加入他們的傳說休息=我得到

我已經使用了ClassInt包R中找到詹克斯在我的數據自然斷裂如下錯誤:

[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 

我試過使用小冊子colo rBin和colorNumeric,而不是他們認爲我的休息,而是覆蓋在他們自己的間隔在傳說和專題。

歡迎任何建議,我想避免將它們轉換爲因子,因爲我可以看到findColours和colorBin函數都附有調色板,但它似乎只是查看傳單colorBins/numeric。

回答

0

沒有一個可重複的例子,很難知道你想要什麼。但嘗試:

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

其中col.regions是一個函數生成的顏色(例如一些colorRampPaletteviridis),at是你的休息和na.color是一些顏色NA值。

然後,你可以這樣做:

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

我們使用這MapView的這樣我們就可以這樣做:

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

您coud顯然使用MapView的將您處理該問題。

+0

嗨蒂姆,謝謝你的回覆。我基本上希望我的傳奇被上色並從我的classIntervals()中分成五個自然分隔箱。這使用findColours對象在我的傳單地圖中顯示顏色,但我似乎無法將其添加爲傳說!當我嘗試將它添加爲傳說時,我得到了該錯誤。 – MrMonkeyBum

+0

當我嘗試colorBin'pal_volume <-colorBin(palette =「YlGnBu」,domain = cols_classes $ brks,bins = length(cols_classes $ brks))'它似乎給我7個垃圾箱而不是我想要的五個! – MrMonkeyBum

+0

確定已經想通了,我需要添加pretty = FALSE到colorBin()函數和bin = classInterval $ brks所以'pal_volume <-colorBin(palette =「YlGnBu」, domain = cols_classes $ brks, bins = cols_classes $ brks,pretty = FALSE)'。再次感謝您的迴應! – MrMonkeyBum