Fecha de la ultima revisiĆ³n: ā2023-22-04ā
ggiraph es un paquete R que permite la creaciĆ³n de grĆ”ficos interactivos usando ggplot2. Con ggiraph, uno puede hacer que sus grĆ”ficos ggplot2 sean interactivos agregando informaciĆ³n sobre herramientas, zoom, desplazamiento panorĆ”mico y Ć”reas en las que se puede hacer clic (conocidas como āinformaciĆ³n sobre herramientasā). Este paquete es Ćŗtil para crear visualizaciones que permitan a los usuarios explorar los datos haciendo clic en los elementos del grĆ”fico.
ggiraph es particularmente Ćŗtil para crear grĆ”ficos interactivos para aplicaciones web, tableros de datos y otros proyectos de visualizaciĆ³n de datos interactivos. Al agregar interactividad a sus grĆ”ficos ggplot2, puede proporcionar visualizaciones mĆ”s atractivas e informativas que permitan a los usuarios explorar los datos con mayor profundidad.
#instalar.paquetes
library(ggplot2)
library(ggiraph)
library(patchwork)
library(dplyr)
# Crear un data frame con x, y, y columnas de etiquetas
data <- data.frame(x = rnorm(50), y = rnorm(50), label = LETTERS[1:50])
# Crear un ggplot2 "scatter plot" con la informaciĆ³n
p <- ggplot(data, aes(x = x, y = y, data_id = label, tooltip = label)) +
geom_point_interactive()
# Hacer el "plot" interactivo con ggiraph
ggiraph(code = print(p))
En este ejemplo, geom_point_interactive() se usa para crear los puntos interactivos y el data_id se utiliza para especificar la columna de ID que se usarĆ” para esas funciones interactivas. El argumento de informaciĆ³n sobre herramientas especifica la columna que se utilizarĆ” para el texto.
Primero comenzaremos cargando el dataset āmpgā. En primer lugar se comenzarĆ” realizando un scatterplot normal comparando la variable displacement - displā y āhighway miles per gallon - hwyā. Luego de crear la grĆ”fica se utilizarĆ” la funciĆ³n ggiraph.
# Cargar el mpg dataset
data(mpg)
# Crear un "scatter plot" con las herramientas de informaciĆ³n interactivos
mpgp <- ggplot(mpg, aes(x = displ, y = hwy, data_id = model, tooltip = paste("Make: ", manufacturer, "<br>Model: ", model, "<br>City MPG: ", cty, "<br>Highway MPG: ", hwy))) +
geom_point_interactive()
# Crear el plot interactivo con ggiraph
ggiraph(code = print(mpgp))
Al este paquete utilizar ggplot2 como base podemos igualmente aƱadir elementos como: a. titulo b. axis tittles c.Ā colores para la grĆ”fica.
#
mpgp2 <- ggplot(mpg, aes(x = displ, y = hwy, data_id = model, tooltip = paste("Make: ", manufacturer, "<br>Model: ", model, "<br>City MPG: ", cty, "<br>Highway MPG: ", hwy, "<br>Class: ", class))) +
geom_point_interactive(aes(color = manufacturer)) +
labs(title = "Engine Displacement vs. Highway MPG", x = "Engine Displacement (Liters)", y = "Highway MPG") +
scale_color_discrete(name = "Manufacturer")
# Interactivo con ggiraph
ggiraph(code = print(mpgp2))
Igual se puede utilizar el paquete para conectar dos grĆ”ficos distintos de la siguiente manera. AquĆ se estarĆ” usando los datos sobre frequencia de vacunaciĆ³n de personas en los Estados Unidos. Los datos estan disponible en el siguiente website:
#Importe de Datos
library(readr)
us_state_vaccinations <- read_csv("us_state_vaccinations.csv")
## Rows: 52836 Columns: 16
## āā Column specification āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
## Delimiter: ","
## chr (1): location
## dbl (14): total_vaccinations, total_distributed, people_vaccinated, people_...
## date (1): date
##
## ā¹ Use `spec()` to retrieve the full column specification for this data.
## ā¹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
DataVaxCompleto = us_state_vaccinations
DataVaxCompleto$location[DataVaxCompleto$location == "New York State"] = "New York"
#Remover todo dato que no incluya los Estados
#Se crea un vector con los datos que no se quieren usar
No_estados = c("American Samoa", "Bureau of Prisons", "Dept of Defense", "Federated States of Micronesia", "Guam", "Indian Health Svc", "Long Term Care", "Marshall Islands", "Northern Mariana Islands", "Republic of Palau", "United States", "Veterans Health", "Virgin Islands", "Puerto Rico")
# Se remueve los datos no necesarios y se redondea el porciento a un decimal
#Se Cambio la Columna de Location a "State"
BarGraphData = DataVaxCompleto %>%
filter(date == max(date), !(location %in% No_estados)) %>%
mutate(
PctFullyVaccinated = round(people_fully_vaccinated_per_hundred, 1)) %>%
select(State = location, PctFullyVaccinated)
CreaciĆ³n del grĆ”fico con los cambios necesarios para que este sea mas preciso.
bar_graph = ggplot(BarGraphData,
aes(x = reorder(State, PctFullyVaccinated),
y = PctFullyVaccinated))+
geom_col(color = "black", fill ="#B526D1", size = 0.5)+
theme(axis.text=element_text(size = 10))+
labs(title = "Percent of Fully Vaccinated",
subtitle = "Data from Our World in Data")+
theme(axis.text.y = element_text(size = 4))+
ylab("")+
xlab("")+
coord_flip()
bar_graph
Como este paquete nos permite tener un grĆ”fico interactico, estamos aƱadiendo la funciĆ³n de ātooltipā para que cuando pasemos el mouse por una barra este nos diga el porcentaje especĆfico de ese estado y el nombre del estado para permitir que toda persona puede proporcionar una mejor experiencia al lector, aumente su atenciĆ³n y la comprensiĆ³n del contenido que la persona este viendo.
#Se utiliza la funcion tooltip_text para indicar que queremos utilizar la variable "State" y la variable "PctFullyVaccinated"
BarGraphData = BarGraphData %>%
mutate(
tooltip_text = paste0(toupper(State), "\n", PctFullyVaccinated, "%")
)
latest_vax_graph <- ggplot(BarGraphData,
aes(x = reorder (State, PctFullyVaccinated),
y = PctFullyVaccinated,
tooltip = tooltip_text, data_id = State
)) +
geom_col_interactive(color = "black", fill="#B526D1", size = 0.4) +
theme(axis.text=element_text (size = 6)) +
labs(title = "Percent Fully
Vaccinated",
subtitle = "Data from Our World in Data"
)+
ylab("")+
xlab("")+
coord_flip()
#latest_vax_graph
girafe(ggobj = latest_vax_graph)
Se estarĆ” selecionando una fecha especĆfica para crear otra grĆ”fica con los porcentajes de vacunaciĆ³n total y comparalos con la fecha seleccionada.
BarGraphData_June20 = DataVaxCompleto %>%
filter(date == "2021-06-20", !(location %in% No_estados)) %>%
arrange(people_fully_vaccinated_per_hundred) %>%
mutate(
PctFullyVaccinated = round(people_fully_vaccinated_per_hundred, 1),
tooltip_text = paste0(toupper(location), "\n", PctFullyVaccinated, "%"))%>%
select(State = location, PctFullyVaccinated, tooltip_text)
DateJuneGraph = ggplot(BarGraphData_June20,
aes(x = reorder (State, PctFullyVaccinated),
y = PctFullyVaccinated,
tooltip = tooltip_text, data_id = State
)) +
geom_col_interactive(color = "black", fill="#B526D1", size = 0.4) +
theme(axis.text=element_text (size = 6)) +
labs(title = "Percent Fully Vaccinated
in June 2021",
subtitle = "Data from Our World in Data"
)+
ylab("")+
xlab("")+
coord_flip()
girafe(ggobj = DateJuneGraph)
## Warning: Removed 1 rows containing missing values (position_stack).
Utilizando el paquete āpatchworkā podemos unir los dos grĆ”ficos para poder comparar la diferencia en las fechas con sus porcentajes de manera rĆ”pida y directa ya que este seƱala los los dos estados a la misma vez.
girafe(code = print(DateJuneGraph + latest_vax_graph)) %>%
girafe_options(opts_hover(css = "fill:purple;"))
## Warning: Removed 1 rows containing missing values (position_stack).
Por mas informaciĆ³n de como utilizar ggiraph, ver este enlace: