{"word_count": 576, "character_count": 4773}
&#160;article en françaisFrench elections - my first choropleth with R : Many journalists say that the electoral campaigns are becoming "data campaigns". The candidates are fighting, making massive use of numbers. They're looking for the number that will make the other one wrong. They're speaking numbers, displaying plots, graphics - interactive or not - about what the actual state of the country is, and how they intend to change it. Why not taking the most of the elections data to learn how to make a simple choropleth with R?The entire code is available for download at the end of the articleDans cet article, nous allons créer une petite choroplèthe des résultats du second tour des élections présidentielles.Voici les adresses de téléchargement des fichiers source:- Contours des communes : http://professionnels.ign.fr/ficheProduitCMS.do?idDoc=6185461- Résultats des élections : http://www.data-publica.com/opendata/13495--resultats-du-deuxieme-tour-de-l-election-presidentielle-2012 Dans un premier temps, nous avons besoin d'installer les paquets appropriés: rgdal pour lire les données au format ESRI et maptools pour certains traitements associés aux données géographiques.install.packages(c("rgdal", "maptools"))Puis, nous importons, d'un côté les contours des communes de GEOFLA: comm &#60;- readOGR("F:/DATAS/GEOFLA/COMMUNES/COMMUNE.SHP", "COMMUNE")et le fichier du résultat du second tour des élections présidentielles.votes &#60;- read.csv2("IN/resultats2012.csv", sep=",", quote=""")Le fichier des votes contient plusieurs colonnes. Pour les afficher:names(votes)Calculons le pourcentage de votants par parti:votes$pc.sar &#60;- votes$results.sarkozy /  votes$results.exprimesvotes$pc.hol &#60;- votes$results.hollande /  votes$results.exprimesOn peut d'ores et déjà afficher quelques statistiques:summary(votes$pc.sar)summary(votes$pc.hol)&#160;Retenons uniquement les communes pour lesquelles des résultats électoraux sont renseignés dans le fichier.nmatch &#60;- which(is.na(match(comm@data$INSEE_COM, votes$commune.code)))print(comm@data[nmatch, c("INSEE_COM", "NOM_COMM")])comm &#60;- comm[-nmatch, ]Et hop, la jointure:m &#60;- merge(comm@data, votes, by.x="INSEE_COM", by.y="commune.code", all.x=TRUE)Il faut aussi affecter un nom unique à chaque ligne. Pour les objets géographiques, on utilise la fonction spChFIDs et pour les data frames, row.names. Affectons le numéro INSEE de la commune:comm &#60;- spChFIDs(comm, as.character(comm$INSEE_COM))rownames(m) &#60;- as.character(m$INSEE_COM)Maintenant, on peut aboutir à un nouvel objet géographique muni des résultats des élections.comm2 &#60;- SpatialPolygonsDataFrame(as(comm, "SpatialPolygons"), data=m)Voici un petit diagramme qui schématise toutes les étapes:Effectuer une jointure avec RNous allons, dans la carte, créer 20 classes de valeurs à partir des pourcentages avec la fonction classIntervalscls &#60;- classIntervals(comm2$pc.sar, n=20, style="equal")Notre palette de couleurs ira du rouge pour Mr Hollande au bleu, pour Mr Sarkozy, mais en passant par un point d'arrêt: le blanc là où il n'y a pas d'affection particulière pour l'un ou l'autre des candidats (votes proches de 50%). Considérant cette palette à trois couleurs, nous retrouvons les couleurs de chaque valeur et classe de cette façon:colcode &#60;- findColours(cls, c("red", "white", "blue"))Affichons le résultat:plot(comm2, col=colcode, border=NA)title(main="résultats des élections présidentielles - second tour") Cela pourrait être sympa de mettre les contours des régions en plus. Cela nous permettra de voir en même temps comment dissoudre des polygones en fonction d'une valeur. Les contours des régions n'existent pas dans GEOFLA mais on peut les créer à partir du fichier des départements. On le fait comme ceci:dep &#60;- readOGR("F:/DATAS/GEOFLA/DEPARTEMENTS/DEPARTEMENT.SHP", "DEPARTEMENT")reg &#60;- maptools::unionSpatialPolygons(dep, dep$NOM_REGION)&#160;On ajoute les contours de régions en les convertissant vers des objets lignes. Dans le jargon spatial R, on parle de coercion et cela se fait avec la librairie maptools. On ajoute aussi les libellés des régions. Pour la transparence des contours et des libellés, on utilise le 4e argument de la fonction rgb.plot(as(reg, "SpatialLines"), col=rgb(0,0,0,.2), lwd=2, add=T)text(coordinates(reg), labels=row.names(reg), cex=.5, col=rgb(0,0,0,.5))title(main="résultats des élections présidentielles - second tour")Dans le prochain post, nous verrons comment aboutir à une représentation de ce type, toujours pour les élections présidentiellesCarte isarithmique des élections selon David B. SparksN'hésitez pas à poser vos questions dans l'espace des commentaires si vous rencontrez des difficultés!Le code entier&#160;https://gist.github.com/2857180