Cartographie avec ggplot2

November 2, 2010
By

This post was kindly contributed by Alea - R - go there to comment and to read the full post.

ggplot2 est une bibliothèque extrêmement puissante et de plus en plus populaire proposant un cadre unifié et une vraie logique pour la génération de graphiques sous R. L'idée ici est d'utiliser cette bibliothèque pour représenter des données spatiales au-dessus d'une carte obtenue, par exemple, par l'importation d'un fichier shapefile, ou autres données utilisée's par la bibliothèque sp.

Pour plus d'informations sur ggplot2 :

Chargement des données

Notes : une bonne partie de cette section est tirée du wiki de ggplot2 :

https://github.com/hadley/ggplot2/wiki/plotting-polygon-shapefiles

On charge d'abord les bibliothèques nécessaires :

library(rgrs)
require(rgdal)
require(maptools)
require(ggplot2)
gpclibPermit()

Pour simplifier on utilise le fond de carte lyon inclus avec rgrs :

data(lyon)

On doit avant toute chose transformer l'objet lyon en un ensmeble de points utilisables par ggplot2. Pour cela on utilise le code suivant :

lyon@data$id <- rownames(lyon@data)
lyon.points <- fortify.SpatialPolygonsDataFrame(lyon, region="id")

Carte de base

On peut maintenant stocker la carte de base, représentant nos polygones d'origine dans un graphique de type ggplot :

lyon.map <-  ggplot() +
  geom_polygon(data=lyon.points, aes(long, lat, group=group), fill=NA, colour="black") +
  coord_map()

On peut afficher cette carte, la personnaliser, etc.

lyon.map

http://alea.fr.eu.org/public/_____________ggplot2_maps_1.png

Représentations de données

Une fois qu'on a la carte de base, on peut très facilement ajouter des données en utilisant les fonctionnalités de ggplot2.

Ici on génère aléatoirement une variable associée à des coordonnées de type latitude/longitude :

df <- data.frame(long=runif(10,4.78,4.88), lat=runif(10,45.72,45.8), val=runif(10,1,10))

Et on peut représenter ces données en ajoutant un geom_point à la carte de base :

lyon.map + geom_point(data=df, aes(long, lat, size=val))

http://alea.fr.eu.org/public/_____________ggplot2_maps_2.png

Et on peut évidemment personnaliser l'apparence de tout cela :

lyon.map + geom_point(data=df, aes(long, lat, size=val), fill="red", colour="white", shape=21) + scale_size(to=c(0,40),"Variable")

http://alea.fr.eu.org/public/_____________ggplot2_maps_3.png

Tags:

Comments are closed.