R, le logiciel libre de statistiques, peut être étendu au traitement de données spatiales, et il arrive même à générer des cartes. La plupart des exemples que j’ai trouvés en ligne concernent l’utilisation de fichiers de type shapefile .shp, j’avais besoin d’un outil plus simple.
Le package “maps” qui contient une carte des départements français, semblait un point de départ intéressant. Ce billet a pour but d’aider d’autres novices qui souhaiteraient produire des choses similaires à ceci :

Les deux cartes ci-dessus ont été produites avec R et le paquet “maps”. Elles présentent, pour l’année 2004, le nombre de naissances d’enfants mâles nommés Ewen et Erwan pour la France métropolitaine et continentale. En gros, Erwan a été abandonné par les Bretons et adopté par les Chtis. Les Bretons ont produit le superceltique “Ewen” qui est très rare en dehors de la Bretagne [Pour une discussion sur les prénoms bretons, voir ici].
*
Le principal problème, à mon avis, avec la géo-statistique, c’est l’établissement du
lien entre le fond de carte et les données. Comment l’ordinateur peut-il comprendre que certains chiffres correspondent à certains départements ? C’est sur cette question que je vais me centrer ici. Je n’aborderai pas du tout la sémantique cartographique ou le choix de données significatives (proportions plutôt que valeurs absolues, etc…).
Commençons par installer le paquet “maps” :
install.packages("maps")
library(maps)
france<-map(database="france")
L’objet “france” est composé de descriptifs des polygones départements : $x (longitudes) et $y ; d’une description de la zone : $range ; et des noms des départements : $names.
L’instruction france$names donnera, dans R, une idée :
[1] "Nord" "Pas-de-Calais"
[3] "Somme" "Nord"
[5] "Ardennes" "Seine-Maritime"
Les départements ne sont pas identifiés par leur numéro administratif, mais par leur nom, avec des étrangetés comme “Cote-Dor”. Les enclaves (l’exclave du Nord dans le Pas de Calais, dite communauté de communes de l’Enclave) sont représentées : d’où l’apparition, dans la liste ci-dessus, de “Nord” à deux reprises.
Produisons une carte toute simple colorant certains départements :
dpt2001<-c("Ain","Marne","Nord","Charente")
col2001<-c(1,2,3,5)
match <- match.map(france,dpt2001)
color <- col2001[match]
map(database="france", fill=TRUE, col=color)
C’est l’instruction “match.map” qui établit le lien entre la liste des départements qui se trouve dans “dpt2001” et le fond de carte, “france”. Le résultat donne quelque chose comme ceci :

L’exclave du Nord est bien coloriée en rouge, comme les îles (Ré et Oléron) au large de la Charente-Maritime. Et comme l’on n’a pas été strict, R a compris qu’il fallait colorier et Charente, et Charente-Maritime… Cela peut poser problème, attention…
Il est donc préférable, peut-être, de demander ceci à R :
match <- match.map(france,dpt2001,exact=TRUE)
Pour la carte des “Ewen”, mes données sont structurées ainsi (j’ai enlevé le nombre de naissances) :
nom DPT NOMBRE
1 Calvados 14 *
2 Cotes-Darmor 22 **
3 Finistere 29 **
Et pour obtenir la carte, je demande à R ceci :
dptewen<-ewen$nom
colewen<-ewen$NOMBRE
match <- match.map(france,dptewen,exact=TRUE)
gray.colors <- function(n) gray(rev(0:(n-1)/1.5)/n)
color <- gray.colors(100)[floor(colewen[match])]
map(database="france", fill=TRUE, col=color)
Au final, donc, il est possible de produire à peu de frais des cartes, presque aussi facilement qu’avec Philcarto, mais pour bénéficier de ce qu’offre Philcarto (les traitements statistiques intégrés et l’excellente formalisation sémantique), il faudra apprendre encore plus de R.