5.1 Panel A. Paises que participan en JAGUAR project
Code
# Obtener los datos del mapaworld_map <-ne_countries(scale ="medium", returnclass ="sf")# Filtrar los países de América Latina incluyendo Méxicolatin_america <-subset(world_map, name %in%c("Brazil", "Uruguay", "Argentina", "French Guiana", "Suriname", "Colombia", "Venezuela", "Bolivia", "Ecuador", "Chile", "Paraguay", "Peru", "Guyana", "Panama", "Costa Rica", "Nicaragua", "Honduras", "Belize", "Guatemala", "Mexico", "Trinidad and Tobago", "Caribe", "Puerto Rico"))# Paises involucrados con el proyecto JAGUARJAGUAR_paises <-c("Argentina", "Brazil", "Colombia", "Chile", "Mexico", "Peru", "Uruguay")# Definir los colores para los paíseslatin_america <- latin_america %>%mutate(color =case_when( name =="Argentina"~"#3392d0", name =="Brazil"~"#9e3995", name =="Colombia"~"#0552a1", name =="Chile"~"#de20a0", name =="Mexico"~"#047e60", name =="Peru"~"#ea2f34", name =="Uruguay"~"#f8bf23",TRUE~"lightgrey"))# Crear el mapa con ggplot2map_plot <-ggplot(data = latin_america) +geom_sf(aes(fill = color, text = name), color ="black") +# añadir `text` para tooltipsscale_fill_identity() +theme_void() +theme(axis.title.x =element_blank(),axis.title.y =element_blank(),legend.position ="none") +coord_sf()
Warning in layer_sf(geom = GeomSf, data = data, mapping = mapping, stat = stat,
: Ignoring unknown aesthetics: text
Code
map_plot
Guardar la figura
5.1.1 ggsave
Code
# Guardar el mapa con alta calidadggsave(filename ="graphs/mapa_latinoamerica.png", plot = map_plot, width =10, # Ancho en pulgadasheight =7, # Altura en pulgadasdpi =300, # Resolución en píxeles por pulgadaunits ="in") # Unidades de tamaño
# Crear el mapap_jaguar <-ggplot() +# Fondo gris para todos los países de América Latinageom_sf(data = latin_america, fill ="lightgrey", color ="white") +# Colorear los países del consorcio JAGUAR con interactividadgeom_sf_interactive(data =filter(latin_america, name %in% JAGUAR_paises),aes(fill = color, tooltip = name, data_id = name),color ="white" ) +scale_fill_identity() +# Para usar directamente los colores definidoscoord_sf(crs =st_crs(3857)) +theme_void() +theme(legend.position ="none")p_jaguar
Code
# Mostrar como mapa interactivogirafe(ggobj = p_jaguar)
5.3 Panel B. Población total por paises
Code
# Crear el boxplot interactivo con los datos de JAGUAR_gapminderbox_plot <- JAGUAR_gapminder %>%ggplot(aes(x = pop, y = country, fill = country, data_id = id)) +# Agregar boxplots interactivos con ligero desplazamiento verticalgeom_boxplot_interactive(position =position_nudge(y =0.25), # Desplaza los boxplots hacia abajowidth =0.5# Controla el ancho de las cajas ) +# Agregar marcas verticales tipo "barra" para valores individuales, también interactivosgeom_point_interactive(aes(col = country, tooltip = id), # Color por paísposition =position_nudge(y =-0.25),# Desplaza puntos hacia arribasize =8, # Tamaño de la marcashape ='|', # Tipo de marcador verticalalpha =0.75# Transparencia ) +scale_fill_manual(values = paises_pal) +scale_color_manual(values = paises_pal) +# Etiquetas y título del gráficolabs(x ='Población total (en años)',y =element_blank(),title = glue::glue('Distribución de la población') ) +# Tema minimalista y ajustes estéticostheme_minimal(base_size =12) +theme(text =element_text(color ='grey20' ),legend.position ='none',panel.grid.minor =element_blank(),plot.title.position ='plot' )box_plot
5.3.1 Volver interactivo
Code
girafe(ggobj = box_plot) # Objeto ggplot a convertir en interactivo
Actualmente, nuestro gráfico de líneas se vuelve naranja cuando pasamos el ratón por encima de ellas. Todo lo demás permanece sin cambios. Cambiémoslo para que todas las líneas menos una se vuelvan transparentes.
La forma de hacerlo es pasar una lista de opciones a girafe(). Esta lista contendrá opts_hover() y opts_hover_inv() para determinar el código CSS que debe aplicarse. Además, fijemos el tamaño de nuestra trama con opts_sizing().
Code
# Convertir en gráfico interactivogirafe(ggobj = box_plot, # Gráfico generado con geom_*_interactiveoptions =list(opts_hover(css =''), # Estilo CSS para el elemento bajo el cursoropts_hover_inv(css ="opacity:0.1;"), # Estilo CSS para los demás elementos (baja opacidad)opts_sizing(rescale =FALSE) # Mantiene el tamaño fijo del gráfico ),height_svg =6, # Altura del gráfico en SVGwidth_svg =9# Ancho del gráfico en SVG)
Notas
line_chart debe ser un objeto creado con ggplot() que use geoms interactivos como geom_line_interactive().
opts_hover(css = ''): puedes personalizar aquí el estilo al pasar el mouse sobre una línea (ej. cambiar color o grosor).
opts_hover_inv(css = 'opacity:0.1;'): permite resaltar una línea al atenuar las otras.
height_svg y width_svg definen el tamaño del gráfico exportado/interactivo.
5.4 Panel C. Esperanza de vida atraves del tiempo
Code
# Crear archivo de lineas sobre la esperanza de vidaline_chart <- JAGUAR_gapminder %>%ggplot(aes(x = year, y = lifeExp, col = country, data_id = id)) +geom_line_interactive(linewidth =2.5) +geom_point_interactive(aes(tooltip = id), size =4) +theme_minimal(base_size =12) +labs(x =element_blank(),y ='Esperanza de vida \n(en años)',title ='Esperanza de vida a lo largo del tiempo' ) +theme(text =element_text(color ='grey20' ),legend.position ='none',panel.grid.minor =element_blank(),plot.title.position ='plot') +scale_color_manual(values = paises_pal)line_chart
5.4.1 Volver interactivo
Code
girafe(ggobj = line_chart, # Objeto ggplot a convertir en interactivo# Seleccionar el Estilo CSS para la línea sobre la que se pasa el cursoroptions =list(opts_hover(css =''), ## CSS code of line we're hovering over# Estilo CSS para las demás líneas que no están siendo enfocadas (reduce opacidad)opts_hover_inv(css ="opacity:0.1;"), ## CSS code of all other lines# Fija el tamaño del gráfico (no permite que cambie con el tamaño del contenedor)opts_sizing(rescale =FALSE) ## Fixes sizes to dimensions below ),# Altura del gráfico en unidades SVGheight_svg =6,# Ancho del gráfico en unidades SVGwidth_svg =9)
5.5 Unir Panel B y C
Code
interactive_plot <-girafe(# Combina el boxplot y el gráfico de líneas en una sola visualización interactivaggobj = box_plot +plot_spacer() + line_chart +plot_layout(widths =c(0.45, 0.1, 0.45)),# Opciones de interactividad para girafeoptions =list(opts_hover(css =''),opts_hover_inv(css ="opacity:0.1;"), opts_sizing(rescale =FALSE) ),# Dimensiones del gráfico en unidades SVGheight_svg =6,width_svg =8)interactive_plot