编辑 MapDeck 图例以显示英里而不是米

Editing MapDeck Legend to Show Miles Instead of Meters

我正在使用 MapDeck 来使用 mb_isochrone 函数绘制距伊利诺伊州阿灵顿高地特定位置的距离。

到目前为止,这是我的代码:

arlington.race <- c("-88.010102466048", "42.093383772976495")

isochrones <- mb_isochrone(arlington.race, 
                           distance = c(8046,
                                        16093,
                                        24140,
                                        32186))

mapdeck(style = mapdeck_style("streets"),
        location = c("-88.010102466048", "42.093383772976495"),
        zoom = 8.5) %>%
  add_polygon(data = isochrones,
              fill_colour = "distance",
              fill_opacity = 0.5,
              legend = TRUE,
              update_view = FALSE,
              legend_format = c(5, 10, 15, 20))

meters2miles <- c(5,10,15,20)

正如您在底部看到的,我正在尝试使用 legend_format 函数编辑图例以显示以英里为单位的距离(5 英里、10 英里、15 英里、20 英里)。同样,我尝试通过多种方式进行操作,包括:

legend_format = list(meters2miles)

但是,无论我如何 method/attempt,我都无法让图例从显示米切换到英里。

legend_format 参数需要一个函数应用于图例值

这是一个可重现的使用示例

library(mapdeck)
set_token(secret::get_secret("MAPBOX"))  ## add your own API key

df <- mapdeck::capitals

## colour the data by the 'value' column
df$value <- sample(1:10, size = nrow(df), replace = T)

## in the legend we want to show the values multiplied by 1000
legend_converter <- function(x) {
    return( as.numeric( x ) * 1000 )
}

mapdeck() %>%
    add_scatterplot(
        data = df
        , fill_colour = "value"
        , legend = TRUE
        , legend_format = list( fill_colour = legend_converter )
    )


参考

Here's the article我写了如何操作图例