Carte avec highcharter

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Damien Dotta
Messages : 2
Enregistré le : 11 Mai 2020, 13:59

Carte avec highcharter

Messagepar Damien Dotta » 11 Mai 2020, 14:11

Bonjour à tous,
J'uilise le package {highcharter} pour réaliser quelques cartes.
J'aimerais pouvoir reproduire cette carte codée ici en javascript : https://jsfiddle.net/BlackLabel/nr1y47a9/

J'ai commencé à écrire ça mais j'ai toujours quelques problèmes...
https://pasteboard.co/J7qWN7v.png
Si quelqu'un peut m'éclairer, je suis preneur.
Merci d'avance !

Code : Tout sélectionner

library(highcharter)
library(httr)
library(dplyr)

getContent <- function(url) {
  content(GET(url))
}
world <- getContent("https://cdn.jsdelivr.net/gh/highcharts/highcharts@v7.0.0/samples/data/world-population.json")

mapdata <- get_data_from_map(download_map_data("custom/world"))

hcmap("custom/world", showInLegend = FALSE) %>%
  hc_add_series(name = "Countries", color = '#E0E0E0') %>%
  hc_add_series(data= world,type = "mapbubble", name = "Population", joinBy = c("iso-a3", "code3"), color= '#E0E0E0',
                minSize = 4, maxSize = "12%",
                tooltip = list(pointFormat = '{point.properties.hc-a2}: {point.z} thousands')) %>%
  hc_colorAxis(
    dataClasses = color_classes(c(0, 50000, 100000, 500000),
                                colors = c("green","#81c784","#43a047","#1b5e20")#,
                                # names = c("sg","tf","qsd")
    )) %>%
  hc_legend(title = list(text = "Mon titre"),
            bubbleLegend = list(
              enabled = TRUE,
              borderColor = '#000000',
              borderWidth = 3,
              color = '#8bbc21',
              connectorColor = '#000000'
            ),
            align = "bottom", layout = "horizontal",
            verticalAlign = "bottom",
            floating = TRUE ,valueDecimals = 0,
            symbolHeight = 11, symbolWidth = 11, symbolRadius = 0,
            backgroundColor='#E0E0E8') %>%
  hc_mapNavigation(enabled = TRUE) %>%
  hc_exporting(enabled = TRUE)

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Carte avec highcharter

Messagepar Serge Rapenne » 12 Mai 2020, 09:26

Bonjour,

Je ne connais pas highcharter mais je viens de jeter un oeil sur ton code et la doc du package.
plusieurs remarques :

Code : Tout sélectionner

world <- getContent("https://cdn.jsdelivr.net/gh/highcharts/highcharts@v7.0.0/samples/data/world-population.json")
retourne une list, il faut transformer cette list en data.frame par ex comme ça

Code : Tout sélectionner

world<-do.call(rbind.data.frame, world)

Un fois transformé, world ne contient pas de champs qui permettent de faire la jointure avec la carte, il faut donc renommer une colonne de ce df.

Code : Tout sélectionner

colnames(world2)[1]<-"iso-a3"

dans le hcmap tu n'indiques pas le champ de world qui doit s'afficher
en définitive, ton appel à hcmap devrait plus ressembler à qq chose comme ça :

Code : Tout sélectionner

hcmap(map="custom/world",data= world, type = "mapbubble", value= "z",name="Population", joinBy = "iso-a3")

Je n'ai pas le temps de fouiller plus avant mais ça devrait te permettre d'avancer

Serge

Damien Dotta
Messages : 2
Enregistré le : 11 Mai 2020, 13:59

Re: Carte avec highcharter

Messagepar Damien Dotta » 12 Mai 2020, 12:12

Merci Serge pour ton aide, j'ai effectivement des ronds qui s'affichent sur ma carte mais la légende par taille des ronds continue à bugger...


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité