Mapeando las primarias 2011

September 18, 2011
By

This post was kindly contributed by Ciencia Política Computacional - go there to comment and to read the full post.

Una de las cosas que mas me atraen de R, es su capacidad gráfica, y lo (relativamente) fácil que es crear ciertas visualizaciones.

Lamentablemente los resultados de las elecciones primarias fueron levantados de la web, supongo que habrá que esperar a que los vuelvan a publicar. Sin embargo estan accesibles los resultados de intendentes y concejales para la provincia de Buenos Aires.resultados PASO Buenos Aires

Con esto ya tenemos los datos como para jugar un poco.

*DISCLAIMER: Esto lo hice solo a modo de práctica, sin mucha rigurosidad o control, y solo tomé los datos mínimos indispensables.*

Para hacer el mapa me "insipiré" principalmente en estos tutoriales:
Mapping the 2011 Chicago Mayoral Democratic Primary - Offensive Politics

Lo primero que necesitamos para crear un cartograma es el mapa en sí. El sitio Web GADM nos permite bajar mapas de todo el mundo en formato Shapefile (*.shp). Para Argentina podemos bajar el mapa con las divisiones politicas a nivel municipal. 
El primer problema que encontré acá, es que el mapa está un tanto desactualizado. Algunos municipios figuran en su antigüo estado (ej. el viejo partido de General Sarmiento que hoy es San Miguel, José C. Paz y Malvinas Argentinas).

Para modificar el mapa podemos bajarnos el Forestry GIS o el MapWindow. Ambos son gratis y nos permiten crear y modificar mapas. Hacerlo es muy fácil, pero no voy a adentrarme en eso ahora, quiza en otro post.

Una vez que tenemos los datos y el mapa listo, podemos empezar con R.

Vamos a necesitar estos paquetes:
library (sp)
library (RColorBrewer)
library (maptools)
Cargamos los datos y el mapa. En este caso solo cargué los resultados del FPV y UDESO junto con el total de votos para calcular el porcentaje.

result<-read.csv("Mapas/BA.csv", sep=";")
mapa<-readShapeSpatial("ARG/BA/BA_PROV.shp")
total<-result$TOT
fpv<-result$FPV
udeso<-result$UDESO
fpv_pct<- fpv*100/total
udeso_pct<- udeso*100/total
 Sobre los vectores de porcentaje creamos factores con breaks de 20.

fpv_pct_f<-cut(fpv_pct, breaks=seq(0,100,20),include.lowest=T)
udeso_pct_f<-cut(udeso_pct, breaks=seq(0,100,20),include.lowest=T)
fp_pct_f<-cut(fp_pct, breaks=seq(0,100,20),include.lowest=T)
Añadimos estos vectores a la información del mapa. 

mapa$fpv<-fpv_pct_f
mapa$udeso<-udeso_pct_f
mapa$fp<-fp_pct_f
Creamos la paletas de colores. Es importante que la cantidad de colores sea igual a la cantidad de niveles de nuestro factor. O sea, con breaks de 20 necesitamos 5 colores.
colfpv<-brewer.pal(5,"Blues")
coludeso<-brewer.pal(5,"Reds")

Ahora ya podemos empezar a plotear el mapa.
Esta línea nos guarda la imagen en formato png y con un fondo gris. No es necesaria para plotear el mapa, pero queda muy bien. 
png("PASO_BA.png", width=630, height=630, bg="grey50")
Cargamos las settings generales del gráfico.
par <- list(axis.line=list(col="transparent"),
clip=list(panel="off"), par.main.text=list(col="black"),
axis.text=list(col="black"), fontsize=list(text=12))
Finalmente ploteamos.
spplot(mapa, "fpv", col.regions=colfpv, col="grey15",
main=list(label="INT. MUNICIPAL, CONCEJALES Y
CONSEJEROS - PASO 2011 - FPV"), res=88, par.settings = par)
axis.text=list(col="black"), fontsize=list(text=12))
Esta línea nos genera el archivo PNG.
dev.off()
Y eso es todo. Podemo hacer lo mismo para mapear los resultados de UDESO y para tener una mejor vista del conurbano bonaerense.






Seguro un programador o alguien con mas experiencia puede hacer algo mas sofisticado. Pero de esta forma creo que es bastante intuitivo.

El código completo junto con los archivos (incluidos los mapas), se pueden ver acá

Saludos.

Tags: ,

Comments are closed.