传单圆形标记不符合我的色彩系数调色板?

问题描述 投票:0回答:1

我在圆形标记中使用定义的调色板来显示地图上每个点的类别。 地图上显示的点根据调色板着色,但调色板与我在域中使用的级别不对应。它们的颜色似乎是随机的。

相关位是颜色因子定义和传单图:

library(dplyr)
library(tidyverse)
library(leaflet)
library(sf)
library(shiny)
library(leafpop)


acc<-read.csv('acc.csv')
names(acc) <- tolower(names(acc))

pal <- colorFactor(c("red", "navy", "green"), domain = c("1. Fatal", "2. Serious", "3. Slight"))

acc <- acc %>%
  st_as_sf(coords = c("easting", "northing"), crs = 27700) %>% st_transform('+proj=longlat +datum=WGS84') %>%
  
  dplyr::mutate(lon = sf::st_coordinates(.)[,1],
                lat = sf::st_coordinates(.)[,2]) 

    output$test <- renderLeaflet({
      acc %>%
        filter(local_auth %in% input$box_local_auth) %>%
        filter(month %in% input$box_month) %>%
        filter(year %in% input$box_year) %>%
        filter(severity %in% input$box_severity) %>%
        leaflet() %>%
        addTiles() %>%
        addCircleMarkers(
          radius = 5,
          color = ~pal(severity),
          label = acc$severity,
          popup=popupTable(popup)) %>%  
        addPolylines(data = map %>%
                      filter(LAD23NM %in% input$box_local_auth), color = "blue",fillOpacity = 0)

这些图像显示的颜色不遵循任何逻辑:

[example 1](https://i.sstatic.net/82yVLxkT.png) enter image description here

r shiny r-leaflet
1个回答
0
投票

它不起作用,因为您在过滤

label = acc$severity
后使用
acc
。但
acc$severity
是未过滤的
acc
的值。 只需将其更改为
~severity
即可。 地图上的颜色没有错,但标签错了。

顺便说一句,如果您提供像这样的完全可重现的示例,则更容易获得答案:

library(leaflet)
library(shiny)
library(dplyr)


acc <- data.frame(
    id_r = c(1,2,3,4,5,6),
    severity = c("1. Fatal", "1. Fatal", "2. Serious", "2. Serious", "3. Slight", "3. Slight"),
    lat = c(1,1,1,1,1,1),
    long = c(1,2,3,4,5,6)
)

pal <- colorFactor(c("red", "navy", "green"), domain = c("1. Fatal", "2. Serious", "3. Slight"))

ui <- fluidPage(
    leafletOutput("test")
)
server <- function(input, output, session) {
    output$test <- renderLeaflet({
      acc %>%
        dplyr::filter(id_r %in% c(3, 4, 5, 6)) %>%
        leaflet() %>%
        addTiles() %>%
        addCircleMarkers(
          radius = 5,
          color = ~pal(severity),
          label = ~severity
          )
    })
}
shinyApp(ui = ui, server = server)
© www.soinside.com 2019 - 2024. All rights reserved.