library(tidyverse)
library(plotly)
library(lubridate)
library(ggrepel)
# Parametros ####
shape_entrada <- c(4,16,17,3,15,25,8,10)
colors_entrada <- c(
"Germán Vargas Lleras" = "royalblue4",
"Gustavo Petro"="gold2",
"Humberto de la Calle"="red2",
"Ivan Duque"="orangered",
"Sergio Fajardo"="green4")
#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)
# ggplot entrada ####
entrada_2018 <- 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")),
nombres = case_when(candidato=="ivan_duque" ~ "Ivan Duque",
candidato=="gustavo_petro" ~ "Gustavo Petro",
candidato=="sergio_fajardo" ~ "Sergio Fajardo",
candidato=="german_vargas_lleras" ~ "Germán Vargas Lleras",
candidato=="humberto_delacalle" ~ "Humberto de la Calle")) %>%
# ggplot
ggplot(aes(x=fecha,y=int_voto, color=nombres))+ #frame=month(fecha)
# Puntos
geom_point(aes(shape=encuestadora,
text = paste('Candidato: ', nombres,
'<br>Intencion de voto:', int_voto,
'<br>Encuestadora:',encuestadora,
'<br>Fecha:', fecha)),
show.legend = FALSE)+
# LOESS
geom_smooth(method="loess", linetype="dotdash", se=TRUE, show.legend = FALSE)+
# Margenes de error
geom_linerange(aes(ymax=e_max, ymin=e_min), show.legend = FALSE) +
# 1era vuelta
geom_vline(aes(xintercept = as.numeric(as_date("2018-05-27"))))+
# Opciones
labs(x="",
y="% Intención voto",
caption="Fuente: Encuestas de intención de voto elecciones 2018. www.recetas-electorales.com")+
scale_shape_manual(values=shape_entrada)+
scale_color_manual(values=colors_entrada)+
coord_cartesian(ylim=c(0,60))+
theme(legend.position="none",
panel.background=element_rect(fill="white", color="white"))
# ggplotly ####
ggplotly(entrada_2018, tooltip = "text")