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.

Obteniendo el error “Trailing Garbage” al cargar mapas desde Highcharter en R.

He creado un panel de control con varios gráficos utilizando el paquete highcharter en R. También he producido algunos mapas con casillas resaltadas. Cargué los mapas de la siguiente manera:

library(highcharter)

mapdata <- get_data_from_map(download_map_data("custom/world-highres.js"))

Esto generó un dataframe que contiene algunas columnas útiles para agregar a mi dataframe principal. Al trazar:

hcmap("custom/world-highres.js", showInLegend = FALSE) %>%
  hc_add_series(
    data = df, 
    type = "mapbubble",
    name = "city", 
    minSize = "1%",
    maxSize = "5%",
    tooltip = list(
      pointFormat = "{point.city}: {point.z:,.0f}"
    ))

Sin embargo, desde hoy, obtengo el siguiente error:

hcmap("custom/world-highres.js")
trying URL 'https://code.highcharts.com/mapdata/custom/world-highres.js'
Content type 'text/javascript' length 238592 bytes (233 KB)
downloaded 233 KB

Error: parse error: trailing garbage
          [6810,7337],[6838,7338]]]}}]};
                     (right here) ------^

No sé si ese punto y coma fue agregado, pero parece que devuelve un error en todos mis mapas. ¿Sabes por qué? Alternativamente, ¿hay alguna forma de cargar el código javascript en R y convertirlo en un dataframe? Los datos se pueden encontrar aquí:

https://code.highcharts.com/mapdata/custom/world-highres.js

Bien, después de consultar los registros de cambios en los datos del mapa:

enter image description here

Supongo que esta es la causa de mi desgracia. ¿Alguna idea de qué se puede hacer?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la actualización reciente de los datos del mapa puede haber causado este problema. El mensaje de error sugiere que hay algún tipo de basura al final de los datos, lo cual podría estar causando el problema.

    Una solución podría ser intentar descargar los datos del mapa desde una fuente diferente o utilizar una versión anterior de los datos del mapa. Otra solución podría ser editar manualmente el archivo de datos del mapa para eliminar cualquier basura o errores de sintaxis al final que puedan estar causando el problema.

    En cuanto a cargar el javascript en R y convertirlo en un dataframe, una forma de hacerlo es utilizar la biblioteca jsonlite en R para convertir el objeto javascript en un dataframe. Aquí tienes un ejemplo de fragmento de código:

    library(jsonlite)
    
    # Cargar los datos de javascript desde una URL
    mapdata_url <- "https://code.highcharts.com/mapdata/custom/world-highres.js"
    mapdata <- readLines(mapdata_url)
    
    # Encontrar el índice de inicio y fin del objeto javascript
    start_index <- grep("=", mapdata)[1] + 1
    end_index <- grep(";", mapdata)[1] - 1
    
    # Extraer el objeto javascript
    mapdata_json <- substr(mapdata, start_index, end_index)
    mapdata_json <- gsub("\\\\'", "'", mapdata_json) # corregir comillas escapadas
    
    # Convertir el objeto javascript en un dataframe
    mapdata_df <- fromJSON(mapdata_json)
    

    Ten en cuenta que en algunos casos, el objeto javascript puede contener errores de sintaxis que impidan su conversión en un dataframe. En estos casos, puede ser necesario editar el archivo manualmente o buscar una fuente alternativa.

Comments are closed.