Transferencias de voto en Andalucía 2011-2015

Posted on 17/06/2015

0


Fuente: CIS 2015, estudio 3079 Base: Andalucía

Fuente: CIS 2015, estudio 3079
Muestra estratificada con afijación proporcional de 1487 entrevistas a personas con derecho a voto en Andalucía. Error ± 2,6% para el conjunto de la muestra

 

Tras mucho tiempo sin aparecer por este blog, aquí va un gráfico sobre los resultados electorales en Andalucía. El gráfico es bastante explícito: un tercio de quienes votaron en las generales cambió su voto en las autonómicas de 2015. ¿Dónde va la pérdida de votos de los tres partidos con representación en las generales de 2011?

Suministro después del salto el código en R

#librerías
library(riverplot)
library (RColorBrewer)

#datos: copiar en clipboard

g2011 a2015 freq
p1 p5 168
s1 s5 315
i1 i5 35
p1 c5 42
p1 a5 36
p1 s5 22
s1 d5 60
s1 c5 19
s1 i5 14
s1 a5 60
i1 d5 39
s1 b5 14

#Y ejecutar la siguiente línea para cargar como data.frame

tr2<-read.table(file = "clipboard", sep = "\t", header=TRUE, stringsAsFactors = F)

#A continuación definimos los elementos del objeto riverplot: un data.frame con los bordes (edges) (que es cada línea: votos que van del PP en 2011 a C’s en 2015), otro con los nodos (cada una de las posiciones de llegada o partida: PP 2011, C’s 2015) y una lista con los estilos (que indica sobre todo los colores de cada edge). #Importante no cambiar los nombres de cada columna en los objetos, ni alterar su estructura

edgesa = data.frame(N1=tr2$g2011, N2=tr2$a2015, Value=tr2$freq,stringsAsFactors = F) nodesa = data.frame(ID = unique(c(tr2$g2011, tr2$a2015)), stringsAsFactors = FALSE)

#Lo siguiente es para asignar posición horizontal (1 o 5) a cada elemento, extraemos el segundo dígito de nodesa$ID (“p1” “s1” “i1” “p5” “s5” “i5” “c5” “a5” “d5” “b5”)


nodesa$x = as.integer(substr(nodesa$ID, 2, 2))

#de lo cual resulta
> nodesa$x
[1] 1 1 1 5 5 5 5 5 5 5

#A continuación definimos la paleta, el 60 que pegamos al final es para darle transparencia

paletta = paste0(brewer.pal(10, "Paired"),"60")

# y los estilos

stylesa = lapply(c(1:10), function(n) {
list(col = paletta[n+1], lty = 0, textcol = "black")
})
names(stylesa) = nodesa$ID

##Para las etiquetas de los nodos. Un proceso bastante largo, hago esto porque no veo claro cómo establecer el valor de “y” para un text()
#Cálculo de porcentajes de cada nodo, seguro que hay formas más parsimoniosas

laber<-
c(100*(sum(edgesa$Value[edgesa$N1=="p1"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N1=="s1"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N1=="i1"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="p5"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="s5"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="i5"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="c5"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="a5"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="d5"])/sum(edgesa$Value))
,100*(sum(edgesa$Value[edgesa$N2=="b5"])/sum(edgesa$Value))
)

#Etiquetas con los porcentajes, con formato de dos dígitos

laber<-paste(format(laber,digits=2,decimal.mark=","),"%")

#Añadimos el nombre de cada partido político y es ya la etiqueta definitiva.

laboro<-c(p1=paste("PP","=",laberfo[1])
,s1=paste("PSOE","=",laberfo[2])
,i1=paste("IU","=",laberfo[3])
,p5=paste("PP","=",laberfo[4])
,s5=paste("PSOE","=",laberfo[5])
,i5=paste("IU","=",laberfo[6])
,c5=paste("C's","=",laberfo[7])
,a5=paste("Abst.","=",laberfo[8])
,d5=paste("Podemos","=",laberfo[9])
,b5=paste("Blanco","=",laberfo[10])
)

## Definimos con los elementos anteriores el objeto river

rpa <- makeRiver(
nodesa
, edgesa
, node_labels= laboro
, node_styles= stylesa
)

## Que a continuación ploteamos. plot_area define que porción del área ocupa el gráfico. gravity tiene dos posiciones, que yo sepa: “top” y “bottom”, que hacen lo que su nombre indica.

png(filename = "rios12.png",
width = 1000, height = 800, pointsize = 18)
plot(rpa, plot_area = 0.70, yscale=0.06, srt=0,gravity="bottom")
text(1,85,"2011",vfont=c("sans serif","bold"),cex=1.5,lty=1)
abline(82,0,h=82)
text(5,85,"2015",vfont=c("sans serif","bold"),cex=1.5,lwd=5)
text(2,-5,"Fuente: Postelectoral CIS 03.06.2015",cex=0.75)
dev.off()

Anuncios
Etiquetado: ,