在 Shiny App 中使用传单包 (RStudio) 对图例进行排序(用于 colorFactor)

Jon*_*nny 5 r rstudio leaflet shiny

我正在使用 RStudio 开发的新传单包部署一个 Shinyapp。关于某些元素的在线文档似乎并不多 - 就我而言,我需要指定图例显示因子级别的顺序。通常,我会通过在绘图命令之前指定级别来执行此操作(例如在 ggplot2 中):

df$name <- factor(df$name, levels = sort(df$name))
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不适用于传单中的图例。下面是一个 MWE(NB Africa geojson 文件可以在这里下载)。您将看到图例顺序不是按字母顺序排序的,正如人们通常所期望的那样。我的问题是如何做到这一点。

library(shiny)
library(leaflet)

map_africa <- rgdal::readOGR("africa.geo.json", "OGRGeoJSON")

map_africa$name <- factor(map_africa$name, levels = sort(map_africa$name))

ui <- bootstrapPage( leafletOutput("map") )

server <- function(input, output, session) {

  pal <- colorFactor('RdYlBu', map_africa$name)

  output$map <- renderLeaflet({ 

    leaflet(map_africa) %>% 
    addPolygons(stroke = F,
                fillColor = ~pal(name),
                popup = ~name) %>% 
    addLegend(position = 'topright',
              colors = ~pal(name), 
              labels = ~name) 

  })

}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)