es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El icono de Leaflet Awesome Markers no se muestra en R.

Este es mi conjunto de datos:

start_stations <- data.frame(
  station = c("StreeterDr", "MichiganAve", "WellsSt"),
  lat = c(41.89228, 41.90096, 41.91213),
  lng = c(-87.61204,-87.62378,-87.63466),
  n = c(23000, 56780, 34520)
)

Este es el código que intenté para graficar el mapa utilizando las coordenadas lat y lng y agregar variaciones de color a las estaciones (ubicaciones) según su conteo y etiquetar cada ubicación utilizando el nombre y el conteo:

install.packages(c("leaflet", "sp")) 
library(leaflet)
library(sp)
install.packages("sf")
library(sf)

lon <- start_stations$lng
lat <- start_stations$lat
name <- start_stations$station
count <- start_stations$n
dfs <- as.data.frame(cbind(lon,lat,name,count))

dfs <- sf::st_as_sf(dfs, coords = c("lon","lat"), crs = 4326)

getColor <- function(dfs) {
  sapply(dfs$count, function(count) {
  if(count <= 20000) {
    "green"
  } else if(count <= 30000) {
    "orange"
  } else {
    "red"
  } })
}

icons <- awesomeIcons(
  icon = 'ios-close',
  iconColor = 'black',
  library = 'ion',
  markerColor = getColor(dfs)
)

leaflet(dfs) %>%
  addTiles() %>%
  addAwesomeMarkers(~lon, ~lat, icon=icons, popup = ~as.character(name), label=~as.character(count))

Todo funciona correctamente excepto mostrar el icono. Quiero mostrar los iconos con el color respectivo al conteo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para mostrar iconos con el color respectivo al conteo, debe modificar la función awesomeIcons() para incluir el mapeo de colores basado en el conteo. Aquí está la modificación a la función getColor() que puede utilizar:

    “`{r}
    getColor <- function(dfs) {
    sapply(dfs$count, function(count) {
    if(count <= 20000) {
    iconColor <- “green”
    } else if(count <= 30000) {
    iconColor <- “orange”
    } else {
    iconColor <- “red”
    }
    awesomeIcons(
    icon = ‘ios-close’,
    iconColor = iconColor,
    library = ‘ion’,
    markerColor = iconColor
    )
    })
    }


    Esta modificación creará dinámicamente un objeto `awesomeIcons()` para cada marcador, con el `iconColor` y el `markerColor` establecidos en función del conteo. Luego puede usar esta función `getColor()` al crear los marcadores: ```{r} icons <- getColor(dfs) leaflet(dfs) %>% addTiles() %>% addAwesomeMarkers(~lon, ~lat, icon=icons, popup = ~as.character(name), label=~as.character(count))

    Esto mostrará los iconos con el color respectivo al conteo.

Comments are closed.