Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save gonzalezgouveia/4518b3c726a90f625ffab36ba0ba86e7 to your computer and use it in GitHub Desktop.
Save gonzalezgouveia/4518b3c726a90f625ffab36ba0ba86e7 to your computer and use it in GitHub Desktop.
library(tidyverse)
library(gganimate)
# devtools::install_github('rensa/ggflags')
library(ggflags) # https://github.com/rensa/ggflags
library(ggthemes)
# Hecho por Rafa @GonzalezGouveia
# Con gusto para #DatosDeMiercoles, propuesto por @R4DS_es
# leyendo los datos
comercio_hispanoamerica_mundo <- readr::read_csv("https://raw.githubusercontent.com/cienciadedatos/datos-de-miercoles/master/datos/2019/2019-05-01/comercio_hispanoamerica_mundo_agregado.csv")
# calculando importanciones vs exportaciones de alimentos
alimentos_hispam <- comercio_hispanoamerica_mundo %>%
filter(nombre_comunidad_producto == 'Alimentos') %>%
group_by(nombre_pais_origen,
anio) %>%
summarise(n = n(),
mean_export_miles = round(mean(valor_exportado_dolares)/1000, 1),
mean_import_miles = round(mean(valor_importado_dolares)/1000, 1)) %>%
ungroup() %>%
mutate(code = case_when(
nombre_pais_origen == 'Argentina' ~ 'ar',
nombre_pais_origen == 'Bolivia' ~ 'bo',
nombre_pais_origen == 'Chile' ~ 'cl',
nombre_pais_origen == 'Colombia' ~ 'co',
nombre_pais_origen == 'Costa Rica' ~ 'cr',
nombre_pais_origen == 'Cuba' ~ 'cu',
nombre_pais_origen == 'Ecuador' ~ 'ec',
nombre_pais_origen == 'El Salvador' ~ 'sv',
nombre_pais_origen == 'Guatemala' ~ 'gt',
nombre_pais_origen == 'Honduras' ~ 'hn',
nombre_pais_origen == 'México' ~ 'mx',
nombre_pais_origen == 'Nicaragua' ~ 'ni',
nombre_pais_origen == 'Panamá' ~ 'pa',
nombre_pais_origen == 'Paraguay' ~ 'py',
nombre_pais_origen == 'Perú' ~ 'pe',
nombre_pais_origen == 'República Dominicana' ~ 'do',
nombre_pais_origen == 'Uruguay' ~ 'uy',
nombre_pais_origen == 'Venezuela' ~ 've'
))
# creando objeto gráfico
p <- alimentos_hispam %>%
ggplot(aes(x = mean_import_miles,
y = mean_export_miles,
label = nombre_pais_origen)) +
# fondo
geom_text(aes(label = as.character(anio)),
x = 4.1,
y = 4,
color = '#ededed',
size = 50) +
# linea del medio
geom_abline(intercept = 0, slope = 1,
color = 'darkgrey', linetype = 2
) +
# banderas con borde
geom_point(size = rel(14), col = 'black') +
geom_flag(aes(country = code), size = rel(12)) +
scale_y_log10() +
scale_x_log10() +
labs(title = 'Importaciones vs Exportaciones',
subtitle = 'Para alimentos en el año {closest_state}',
x = 'Importaciones',
y = 'Exportaciones',
caption = 'Debajo de la línea punteada indica mayores importaciones que exportaciones') +
# tomando tema de base
theme_gdocs() +
# cambiando algunas cosas del tema
theme(axis.text = element_blank(),
plot.subtitle = element_text(hjust = 0, size = rel(1.3), face = "plain", colour = 'gray40'),
axis.title = element_text(face = "plain", colour = 'gray40', size = rel(1.3)),
axis.line.y = element_line(),
panel.grid.minor = element_line(colour = 'gray'))
# creando objeto de animación
anim <- p + transition_states(anio,
transition_length = 1,
state_length = 0.1,
wrap = FALSE)
# animando final
animate(anim,
nframes = 400,
fps = 50,
start_pause = 50,
end_pause = 100)
# guardando animacion como gif
anim_save('datosdemiercoles_economia_hispam.gif')
# Hecho por Rafa @GonzalezGouveia
# Con gusto para #DatosDeMiercoles, propuesto por @R4DS_es
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment