{"word_count": 213, "character_count": 2994}
Juste quelques lignes de code, pour visualiser les résultats du premier tour en France. L'idée est de faire une carte assez minimaliste, avec des cercles centrés sur les centroïdes des départements. On commence par récupérer les données pour le fond de carte, un fichier 7z sur le site de l'ign.download.file("https://wxs-telechargement.ign.fr/oikr5jryiph0iwhw36053ptm/telechargement/inspire/GEOFLA_THEME-DEPARTEMENTS_2016$GEOFLA_2-2_DEPARTEMENT_SHP_LAMB93_FXX_2016-06-28/file/GEOFLA_2-2_DEPARTEMENT_SHP_LAMB93_FXX_2016-06-28.7z",destfile = "dpt.7z")On a dans ce fichier des informations sur les centroïdes library(maptools)library(maps)departements&#60;-readShapeSpatial("DEPARTEMENT.SHP")plot(departements)points(departements@data$X_CENTROID,departements@data$Y_CENTROID,pch=19,col="red")Comme ça ne marche pas très bien, on va le refaire à la main, par exemple pour l'Ille-et-Vilaine,pos=which(departements@data[,"CODE_DEPT"]==35)Poly_35=departements[pos,]plot(departements)plot(Poly_35,col="yellow",add=TRUE)departements@data[pos,c("X_CENTROID","Y_CENTROID")]points(departements@data[pos,c("X_CENTROID","Y_CENTROID")],pch=19,col="red")library(rgeos)(ctd=gCentroid(Poly_35,byid=TRUE))points(ctd,pch=19,col="blue")Comme ça marche mieux, on va utiliser ces centroïdes. ctd=as.data.frame(gCentroid(departements,byid=TRUE))plot(departements)points(ctd,pch=19,col="blue")Maintenant, il nous faut les résultats des élections, par département. On peut aller scraper le site du ministère d' intérieur. On a une page par département, donc c'est facile de parcourir. Par contre, dans l'adresse url, il faut le code région. Comme je suis un peu fainéant, au lieu de faire une table de correspondance, on teste tout, jusqu'à ce que ça marche. L'idée est d'aller cherche le nombre de voix obtenues par un des candidats. candidat="M. Emmanuel MACRON"library(XML)voix=function(no=35){testurl=FALSEi=1vect_reg=c("084","027","053","024","094","044","032","028","075","076","052","093","011","001","002","003","004")region=NAwhile((testurl==FALSE)&#38;(i&#60;=20)){reg=vect_reg[i]nodpt=paste("0",no,sep="")# if(!is.na(as.numeric(no))){if(as.numeric(no)&#60;10) nodpt=paste("00",no,sep="")}url=paste("http://elections.interieur.gouv.fr/presidentielle-2017/",reg,"/",nodpt,"/index.html",sep="")test=try(htmlParse(url),silent =TRUE)if(!inherits(test, "try-error")){testurl=TRUEregion=reg}i=i+1}tabs tab=tabs[[2]]nb=tab[tab[,1]==candidat,"Voix"]a&#60;-unlist(strsplit(as.character(nb)," "))as.numeric(paste(a,collapse=""))}On peut alors tester&#62; voix(35)[1] 84648Comme ça semble marcher, on le fait pour tous les départements liste_dpt=departements@data$CODE_DEPTnbvoix=Vectorize(voix)(liste_dpt)On peut alors visualiser sur une carte. plot(departements,border=NA)points(ctd,pch=19,col=rgb(1,0,0,.25),cex=nbvoix/50000)Et on peut aussi tenter pour une autre candidate, candidat="Mme Marine LE PEN"et on obtient la carte suivante plot(departements,border=NA)points(ctd,pch=19,col=rgb(0,0,1,.25),cex=nbvoix/50000)