Sección PrÔctica de la sesión de Visualización Interactiva.
Configuración.
Vamos a configurar la sesión de RStudio para utilizar el locale en español.
# GrƔficas en plotly
# Autor: Jorge Juvenal Campos Ferreira
# Opciones
Sys.setlocale("LC_ALL", "es_ES.UTF-8") #mac## [1] "es_ES.UTF-8/es_ES.UTF-8/es_ES.UTF-8/C/es_ES.UTF-8/en_US.UTF-8"
LibrerĆas
Vamos a cargar las librerĆas siguientes:
pacman. Para cargar librerĆas de R.tidyverse. Manejo de datos.plotly. LibrerĆa para visualización interactiva.readxl. LibrerĆa para abrir archivos de Excel.
Bases de datos.
Leemos la base de datos directo de la carpeta 01_Datos:
TweetsGobernadores.xlsx, contiene datos de tweets de los 32 gobernadores del paĆs para los Ćŗltimos dĆas.BTC-USD.csv, contiene los precios a nivel diario de la razón Precio del Bitcoin/Precio del Dólar de Estados Unidos.
# Base de datos ----
bd <- read_xlsx("01_Datos/TweetsGobernadores.xlsx")
btc <- read_csv("01_Datos/BTC-USD.csv")El procedimiento para hacer una visualización interactiva, utilizando plotly y ggplotly hay que seguir los siguientes pasos:
Elaborar la grƔfica de
ggplotde la manera en que lo hemos estado haciendo hasta ahora.A la grƔfica le agregamos como cadena de texto el mensaje que queremos que aparezca en una ventana a travƩs del aesthetico
text.Una vez que agregamos el contenido de las ventanas ( tooltips ) agregamos al final de la grÔfica el código
ggplotly(tooltip = "text")
A continuación, vamos a ver el ejemplo de la grÔfica de barras:
GrƔfica de Barras
En el ejemplo de la grĆ”fica de barras, vamps a comparar quiĆ©n ha sido el gobernador mĆ”s tuitero en los Ćŗltimos dĆas:
# GRĆFICA DE BARRAS ----
# Tweets por gobernador
tweets <- bd %>%
group_by(Gobernador, screen_name,
`Fecha de salida`, Partido, Estado) %>%
count()
# Formulamos la grafica
plt <- tweets %>%
ggplot(aes(x = reorder(screen_name, n),
fill = Partido,
y = n,
# Aca resaltamos lo que queremos que se muestre en la
# ventana del tootlip. Notese que le damos formato al
# texto a trav'es de los tags de HTML
text = paste0("<b>Nombre del gobernador: </b>", Gobernador, "<br>",
"<b>Partido: </b>", Partido, "<br>",
"<b>Fecha de salida: </b>",`Fecha de salida`, "<br>",
"<b>Entidad </b>", Estado, "<br>"
)
)) +
geom_col() +
coord_flip() +
labs(title = "<b>Numero</b> de Tweets emitidos por<br>gobernador la Ćŗltima semana",
x = "",
y = "") +
scale_fill_manual(values = c("pink",
"orange",
"brown",
"blue",
"purple",
"yellow",
"red",
"green"))
# Cisualizamos la grƔfica estƔtica de ggplot simple
pltCheca en la grƔfica de arriba como se plasman los tags de HTML, y checa como estos desaparecen en la grƔfica de abajo, dando formato al texto.
Checa que pasa si le das click en la leyenda, en cada uno de los partidos polĆticos.
GrƔfica de puntos
Para el ejemplo de puntos, vamos a obtener una grĆ”fica de puntos donde veamos en quĆ© momento se hacen los tweets por cada gobernador, para ver la densidad de tweets por dĆa.
## [1] "POSIXct" "POSIXt"
# AcĆ” no procesamos la base, la pasamos directo (porque no hace falta procesarla).
bd %>%
ggplot(aes(x = created_at,
y = screen_name,
color = Partido,
# Generamos el texto de cada ventana.
# AcƔ queremos que se muestre quien tuiteo y quƩ dijo.
text = paste0("<b>Emisor: </b>", screen_name, "<br>",
"<b>Texto: </b>", str_wrap(text, 50), "<br>"))) +
# transparencia de los puntos
geom_point(alpha = 0.3) +
# paleta de colores
scale_color_manual(values = c("pink",
"orange",
"brown",
"blue",
"purple",
"yellow",
"red",
"green"))GrĆ”fica de lĆneas
Para la grĆ”fica de lĆneas vamos a trabajar con los datos del precio de Bitcoin. Cada ventana va a mostrar la fecha y el precio, los cuales son datos que no siempre son fĆ”cilmente consultables cuando inspeccionamos este tipo de grĆ”ficas.
# GrĆ”fica de lĆneas -----
# Precios de Apertura del BTC a nivel diario
# Procesamos la base de datos.
btc <- btc %>%
# Transformamos a numerico el precio de apertura
mutate(Open = as.numeric(Open)) %>%
# Renombramos las variables de Fecha, apertura y cierre.
rename(Fecha = Date,
Apertura = Open,
Cierre = Close)## Warning: Problem with `mutate()` input `Open`.
## x NAs introduced by coercion
## ā¹ Input `Open` is `as.numeric(Open)`.
## Warning in mask$eval_all_mutate(dots[[i]]): NAs introduced by coercion
# Generamos la grƔfica en ggplot
btc %>%
ggplot() +
geom_line(aes(x = Fecha,
y = Apertura)) +
theme_bw() +
labs(y = "", x = "")