2017-04-06 2 views
0

j'ai tracé une carte de France avec des couleurs personnalisées avec map():personnalisées avec stocker vos couleurs geom_polygon()

map(database="france", fill=TRUE, col=color) 

Résultats:

map of france with the colors

(ne me dérange pas les deux erreurs)

puis je veux mettre cette carte avec une projection de Lambert en utilisant le paquet ggplot2:

head(fortify(carte_france)) 
ggplot(map('france'), aes(long, lat, group = group)) + 
    geom_polygon(col = 1) + 
    coord_map(projection = "lambert", parameters = c(lat0 = 41.366005 , lat1 = 51.097523)) 

Cependant, il me donne ceci:

map of france with geom_polygon()

Je sais que les couleurs sombres vient de l'arg fill de geom_polygon(), mais est-il un moyen de dire la fonction geom_polygon() de ne pas utiliser la arg fill ou de garder les couleurs que j'ai mis avant?

Vecteur de couleurs, color:

c("yellowgreen", "yellowgreen", "yellowgreen", "yellowgreen", 
"gold1", "sienna3", "yellowgreen", "yellowgreen", "sienna3", 
"gold1", "gold1", "gold1", "sienna3", "sienna3", "gold1", "dodgerblue2", 
"dodgerblue2", "dodgerblue2", "gold1", "dodgerblue2", "sienna3", 
"dodgerblue2", "burlywood2", "dodgerblue2", "palevioletred4", 
"dodgerblue2", "palevioletred4", "dodgerblue2", "palevioletred4", 
"palevioletred4", "gold1", "palevioletred4", "gold1", "darkorchid4", 
"gold1", "darkorchid4", "palevioletred4", "green4", "cyan4", 
"gold1", "palevioletred4", "burlywood2", "green4", "green4", 
"cyan4", "darkorchid4", "green4", "burlywood2", "palevioletred4", 
"burlywood2", "green4", "green4", "palevioletred4", "palevioletred4", 
"palevioletred4", "green4", "burlywood2", "olivedrab2", "green4", 
"olivedrab2", "darkorchid4", "darkorchid4", "cyan4", "darkorchid4", 
"cyan4", "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", 
"cyan4", "olivedrab2", "cyan4", "olivedrab2", "olivedrab2", "cyan4", 
"cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", "cyan4", 
"cyan4", "cyan4", "orange2", "orangered1", "orangered1", "orangered1", 
"olivedrab2", "orange2", "olivedrab2", "orangered1", "orange2", 
"orangered1", "orange2", "orange2", "orangered1", "orangered1", 
"orangered1", "orange2", "orangered1", "orange2", "orangered1", 
"olivedrab2", "orangered1", "orangered1", "orangered1", "orangered1", 
"orange2", "orange2", "orange2", "chartreuse3", "orangered1", 
"chartreuse3") 

Répondre

1

Tout d'abord, vous devez utiliser map_data qui créent un jeu de données dans le bon format pour ggplot avec des cartes de cartothèque. Dans ce cas, vous n'aurez pas ces points blancs sur votre carte.
Lorsque vous avez défini l'ordre de vos couleurs en fonction de l'ordre des polygones dans la fonction map, j'ai créé une table pour la jointure à gauche avec map_data.

# Get polygon order from map 
map_france <- map(database="france", fill=TRUE) 

# Create a dataframe with department and corresponding colors 
names_col <- data.frame(
    region = map_france$names, 
    col_dpt = c("yellowgreen", "yellowgreen", "yellowgreen", "yellowgreen", 
       "gold1", "sienna3", "yellowgreen", "yellowgreen", "sienna3", 
       "gold1", "gold1", "gold1", "sienna3", "sienna3", "gold1", "dodgerblue2", 
       "dodgerblue2", "dodgerblue2", "gold1", "dodgerblue2", "sienna3", 
       "dodgerblue2", "burlywood2", "dodgerblue2", "palevioletred4", 
       "dodgerblue2", "palevioletred4", "dodgerblue2", "palevioletred4", 
       "palevioletred4", "gold1", "palevioletred4", "gold1", "darkorchid4", 
       "gold1", "darkorchid4", "palevioletred4", "green4", "cyan4", 
       "gold1", "palevioletred4", "burlywood2", "green4", "green4", 
       "cyan4", "darkorchid4", "green4", "burlywood2", "palevioletred4", 
       "burlywood2", "green4", "green4", "palevioletred4", "palevioletred4", 
       "palevioletred4", "green4", "burlywood2", "olivedrab2", "green4", 
       "olivedrab2", "darkorchid4", "darkorchid4", "cyan4", "darkorchid4", 
       "cyan4", "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", 
       "cyan4", "olivedrab2", "cyan4", "olivedrab2", "olivedrab2", "cyan4", 
       "cyan4", "olivedrab2", "olivedrab2", "olivedrab2", "cyan4", "cyan4", 
       "cyan4", "cyan4", "orange2", "orangered1", "orangered1", "orangered1", 
       "olivedrab2", "orange2", "olivedrab2", "orangered1", "orange2", 
       "orangered1", "orange2", "orange2", "orangered1", "orangered1", 
       "orangered1", "orange2", "orangered1", "orange2", "orangered1", 
       "olivedrab2", "orangered1", "orangered1", "orangered1", "orangered1", 
       "orange2", "orange2", "orange2", "chartreuse3", "orangered1", 
       "chartreuse3") 
) 

Ensuite, vous pouvez rejoindre ce dataframe aux données créées par map_data et appeler le vecteur de couleur avec ggplot.

# Get the map in the correct format for ggplot 
# And join the correspondance of colors 
carte_france <- map_data('france') %>% 
    left_join(names_col) 

# Plot 
ggplot(carte_france, aes(long, lat, group = group)) + 
    geom_polygon(col = 1, fill = carte_france$col_dpt) + 
    coord_map(projection = "lambert", 
      parameters = c(lat0 = 41.366005 , lat1 = 51.097523)) 

Pour votre information, sur le site de l'IGN (http://professionnels.ign.fr/geofla), vous pouvez télécharger la carte de départements français, les informations sur la région. Dans ce cas, il serait plus facile de créer un vecteur de couleurs basé sur le nom de la région ...

+0

Ouais j'ai trouvé la réponse il y a 10 minutes et j'ai fait la même chose mais le problème avec IGN c'est qu'ils ne donnent que le centroïdes pour les départements et donc je ne peux pas géolocaliser mes points pour lesquels je n'ai que la latitude et la longitude puisque les coords utilisés pour tracer ne sont pas les mêmes. –

+0

Vous pouvez reprojeter le fichier de forme IGN ou vos points en utilisant 'sp :: spTransform'. Mais c'est sujet différent que cette question ... –

+0

Merci pour le conseil, je vais vérifier s'il est possible d'obtenir la projection par longitude et latitude avec cette fonction. –