Ver código
library(tidyverse)
library(lubridate)
library(plotly)
#1. Importar encuestas desde GitHub ####
encuestas_ulr_2018 <- "https://raw.githubusercontent.com/nelsonamayad/Elecciones-presidenciales-2018/master/Elecciones%202018/encuestas2018.csv"
encuestas_2018 <- readr::read_csv(encuestas_ulr_2018)
#2. Alistamiento #####
encuestas_carta <- encuestas_2018 %>%
# Seleccionar candidatos que encabezan las encuestas
dplyr::select(n,fecha,encuestadora,ivan_duque,gustavo_petro,sergio_fajardo,german_vargas_lleras, humberto_delacalle, m_error=margen_error, muestra) %>%
# Pivotear los datos
tidyr::pivot_longer(cols = c("ivan_duque","gustavo_petro","sergio_fajardo","german_vargas_lleras", "humberto_delacalle"),
names_to = "candidato", values_to = "int_voto") %>%
# Seleccionar solo las encuestas hechas en 2018
dplyr::filter(as_date(fecha, tz="GMT") >= as_date('2018-01-01', tz="GMT")) %>%
# Crear algunas variables
dplyr::mutate(e_max = int_voto + m_error,
e_min = int_voto - m_error,
fecha = as.Date(fecha),
candidato = factor(candidato, levels=c("ivan_duque","gustavo_petro","sergio_fajardo","german_vargas_lleras","humberto_delacalle")))
resultado <- tribble(~fecha,~candidato,~int_voto,
"2018-05-27","ivan_duque",39.14,
#"2018-05-27","german_vargas_lleras",7.28,
"2018-05-27","gustavo_petro",25.08
#,"2018-05-27","sergio_fajardo",23.73,
#"2018-05-27","humberto_delacalle",2.06
)
# Caracteristicas graficas ####
shape_menu <- c(4,16,17,3,15,25,8)
title_menu <- "Las encuestas de intención de voto como alternativa al chisme y la intuición"
subtitle_menu <- c("37 encuestas durante 2018, 7 encuestas entre 1era y 2da vuelta. \nCurva LOESS ponderada por el tamaño de la muestra de cada encuesta.")
fuente <- c("Fuente: Cálculos @nelsonamayad")
legis <- geom_vline(xintercept=as.Date("2018-03-11"), size=0.1,linetype="dashed")
pv <- geom_vline(xintercept=as.Date("2018-05-27"), size=0.1,linetype="dashed")
# 3 La grafica ####
carta_2018 <- encuestas_carta %>%
dplyr::filter(candidato %in% c("ivan_duque","gustavo_petro")) %>%
dplyr::mutate(nombre=ifelse(candidato=="ivan_duque","Iván Duque","Gustavo Petro")) %>%
dplyr::mutate(frame = lubridate::month(ymd(fecha),label = TRUE,abbr = TRUE) %>% factor(levels=c("Jan","Feb","Mar","Apr","May","Jun"))) %>%
ggplot(aes(x=fecha, y=int_voto, color=candidato, frame = as.numeric(frame))) +
#Loess
#geom_smooth(aes(fill=candidato, color=candidato, weight=muestra), span=0.5,method="loess", show.legend = F) +
#Encuestas
geom_point(aes(shape=encuestadora, size=muestra_int_voto,
text = paste('Candidato:', nombre,
'<br>Encuestadora:',encuestadora,
'<br>Fecha: ', fecha,
'<br>Intencion de voto:', int_voto)), size=2) +
#Error
geom_linerange(aes(ymax=e_max, ymin=e_min,color=candidato)) +
#Primera vuelta y legistlativas
legis+
annotate("text",x=as.Date("2018-03-12"),y=8,label="Legislativas",angle=90,size=2.5)+
pv+
annotate("text",x=as.Date("2018-05-28"),y=8,label="1 era vuelta",angle=90,size=2.5)+
# Resultados
geom_hline(yintercept=56.4, linetype="dashed", color="orangered")+
geom_hline(yintercept=43.6, linetype="dashed", color="gold2")+
annotate("text",x=as.Date("2018-02-02"),y=58,label="Duque: 56.39%",size=3)+
annotate("text",x=as.Date("2018-02-02"),y=45,label="Petro: 43.61%",size=3)+
#Labs
labs(x=NULL,y="Intencion de voto %")+
#Themes
theme(legend.position="none",
panel.background=element_rect(fill="white", color="grey50"),
legend.title=element_blank(),
legend.key=element_blank(),
strip.text.x = element_text(size=10),
strip.background=element_blank()) +
#Scales
scale_color_manual(values=c("orangered","gold2")) +
scale_fill_manual(values=c("orangered","gold2")) +
scale_shape_manual(values=shape_menu)
# plotly
ggplotly(carta_2018, tooltip = "text")Encuestas 2018