使用colorQuantile时,AddLegend显示值范围而不是百分比

时间:2019-05-21 14:59:50

标签: r colors shiny

我正在使用R闪亮仪表板显示天气栅格文件。我使用colorQuantile作为显示颜色的方法。在图例中,它显示了百分比。正如您在下图中看到的。我希望图例中的标签显示每个容器的值范围。我不确定该怎么做。

Legend that displaying '%'

这是我的服务器。R

output$weather_map <- renderLeaflet({
        rw = weatherband()

        if (!is.null(rw)) {
            pal_w = colorQuantile('RdYlGn', values(rw), na.color = 'transparent', n = 7)

            leaflet() %>%
                addTiles() %>% 
                addRasterImage(rw, colors = pal_w, opacity = 0.5) %>%
                addLegend(position = 'topright', pal = pal_w, value = raster::values(rw), opacity = 1)            
        }
    })

注意:rw是光栅图像。

提前谢谢!

1 个答案:

答案 0 :(得分:1)

当我需要调整leaflet中的标签时,我退回到使用参数colorslabels代替palvalues。好处是您可以自定义缺点是多行代码。

由于我无权访问rw,因此我抓到了我最喜欢的地图示例:

library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))

然后使用leaflet备用模式来自定义图例标签:

library(leaflet)
qpal <- colorQuantile("RdYlBu", nc$AREA, n = 5)

# the extra code building off the existing pal
qpal_colors <- unique(qpal(sort(nc$AREA))) # hex codes
qpal_labs <- quantile(nc$AREA, seq(0, 1, .2)) # depends on n from pal
qpal_labs <- paste(lag(qpal_labs), qpal_labs, sep = " - ")[-1] # first lag is NA

map %>%
  addPolygons(stroke = FALSE, smoothFactor = 0.2, fillOpacity = 1,
              color = ~qpal(AREA)
  ) %>%
  addLegend(colors = qpal_colors, labels = qpal_labs, opacity = 1)

enter image description here