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.

Agregue segmentos de color a la ubicación en un mapa plot utilizando las coordenadas de latitud y longitud en R.

Mi conjunto de datos tiene 4 columnas que son “station_name”, “station_lat”, “station_lng” y “count”. Este es un ejemplo de 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)
)

Necesito trazar un mapa utilizando estas coordenadas y variaciones de color para las estaciones (ubicaciones) de acuerdo con su cantidad y etiquetar cada ubicación usando el nombre y la cantidad. Intenté este código y ocurrió un error.

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<- st_as_sf(dfs)

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(top100_start_station_cordinates)
)

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

Answer

  1. Avatar for davy.ai

    Hay un error en el código en esta línea:

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

    top100_start_station_cordinates no está definido en el código, en su lugar debería ser dfs, que es el dataframe que se ha creado.

    El código corregido es:

    install.packages(c('leaflet', 'sp')) 
    library(leaflet)
    library(sp)
    install.packages('sf')
    library(sf)
    
    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)
    )
    
    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 <- st_as_sf(dfs)
    
    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))
    

    Este código creará un mapa con marcadores coloreados en función del recuento, y etiquetados con los nombres y recuentos de la estación.

Comments are closed.