Skip to content

Instantly share code, notes, and snippets.

@datagistips
Created June 2, 2012 07:51
Show Gist options
  • Save datagistips/2857180 to your computer and use it in GitHub Desktop.
Save datagistips/2857180 to your computer and use it in GitHub Desktop.
Elections Simple Choropleth
library(rgdal)
library(maptools)
library(classInt)
setwd("F:/METHODES/1205_CAMPAGNE_PRES")
#########################
## READING SOURCE DATA ##
#########################
# on intègre les contours des communes GEOFLA
comm <- readOGR("F:/DATAS/GEOFLA/COMMUNES/COMMUNE.SHP", "COMMUNE")
## DONNEES ELECTORALES ##
# http://www.data-publica.com/opendata/13495--resultats-du-deuxieme-tour-de-l-election-presidentielle-2012
votes <- read.csv2("IN/resultats2012.csv", sep=",", quote="\"")
# on calcule le pourcentage de votes "
# pour l'un et l'autre des candidats
votes$pc.sar <- votes$results.sarkozy / votes$results.exprimes
votes$pc.hol <- votes$results.hollande / votes$results.exprimes
#######################
## UNMATCHED REMOVAL ##
#######################
# on peut afficher pour quelles communes
# on ne trouve pas de résultats de votes
nmatch <- which(is.na(match(comm@data$INSEE_COM, votes$commune.code)))
print(comm@data[nmatch, c("INSEE_COM", "NOM_COMM")])
# on les supprime de la donnée géographique
comm <- comm[-nmatch, ]
#############
## MERGING ##
#############
# on lance la jointure
m <- merge(comm@data, votes, by.x="INSEE_COM", by.y="commune.code", all.x=TRUE)
# avant d'affecter le nouveau data.frame à la donnée géo initiale,
# on doit affecter les mêmes noms de lignes pour chacune des 2 données source
comm <- spChFIDs(comm, as.character(comm$INSEE_COM))
rownames(m) <- as.character(m$INSEE_COM)
## COMBINING GEO SOURCE & DATA SOURCE ##
comm2 <- SpatialPolygonsDataFrame(as(comm, "SpatialPolygons"), data=m)
############
# PLOTTING #
############
# avant d'afficher la carte, on va reclasser les données
# selon des intervales 20 classes
# on teste selon intervalles réguliers ainsi que jenks
cls <- classIntervals(comm2$pc.sar, n=20, style="equal")
# on trouve les couleurs correspondantes
# en fonction des classes et de la palette
colcode <- findColours(cls, c("red", "white", "blue"))
plot(comm2, col=colcode, border=NA)
# on affiche les contours régionaux par dessus
dep <- readOGR("F:/DATAS/GEOFLA/DEPARTEMENTS/DEPARTEMENT.SHP", "DEPARTEMENT")
reg <- maptools::unionSpatialPolygons(dep, dep$NOM_REGION)
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")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment