En este análisis, hemos desarrollado una visualización inspirada en un gráfico diseñado por Tania Shapiro1 disponible en su repositorio de GitHub2. La visualización original se centra en presentar a traves de un gráfico la tendencia del actor Leonardo Dicaprio a salir con chicas cuya edad máxima no sobrepasa los 25 años. Nuestro enfoque basado en un conjunto de datos diferente, nos condicionó a ajustar tanto la estructura como el diseño para reflejar las características únicas de nuestra información.
Hemos extraido datos de los Ingresos y Gastos del
BCRP3 gestionados por los diferentes presidentes
de la república a lo largo de los años (2014-2024).
Contexto económico de la pandemia:
Durante la pandemia de COVID-19, Perú registró una caída del 11,1% en
su PBI en 2020, una de las más severas en América Latina. Esto se debió
a las restricciones sanitarias y la paralización de actividades
económicas clave.
El gobierno implementó programas de alivio y estímulo económico que
incrementaron significativamente el gasto público, mientras que los
ingresos fiscales se redujeron por la contracción económica. Sectores
como el turismo, la construcción y el comercio fueron especialmente
afectados, reflejando la magnitud del desafío económico.
Fuente
de la BCRP
1. Aumento de los gastos públicos:
El gobierno peruano tuvo que realizar un gasto significativo para
contrarrestar los efectos de la pandemia, lo que incrementó notablemente
los gastos en 2020 y 2021. Entre las principales áreas de aumento de
gasto se incluyen:
Medidas de apoyo económico: El gobierno implementó varios
programas de ayuda directa a los ciudadanos más vulnerables, como bonos
y subsidios, lo que aumentó el gasto fiscal. Por ejemplo, el Bono
Familiar Habitacional y el Bono Universal.
Gastos en salud: Aumento en la inversión en el sector salud para
enfrentar la crisis sanitaria. Esto incluyó la compra de equipos
médicos, la contratación de personal sanitario y la infraestructura para
hospitales temporales.
Medidas de reactivación económica: Para evitar mayores caídas en
el empleo y la producción, se destinaron recursos a programas como
Reactiva Perú, que otorgó créditos garantizados a empresas afectadas por
la pandemia.
2. Disminución de los ingresos:
Por otro lado, los ingresos del gobierno se vieron drásticamente
reducidos debido a:
Contracción económica: La pandemia obligó a la paralización de
sectores clave de la economía como la minería, la manufactura, y
especialmente el turismo. Esto redujo la actividad económica general, lo
que resultó en menores recaudaciones por impuestos (como el IVA,
impuestos sobre la renta, etc.).
Reducción de la actividad comercial: Las restricciones sanitarias
y el confinamiento impactaron de manera negativa el consumo interno, lo
que también afectó la recaudación fiscal. Menos ventas implicaron menos
impuestos indirectos (como el impuesto al consumo).
Desempleo e informalidad: El desempleo aumentó debido a la
crisis, y gran parte de la población en Perú trabaja en el sector
informal, donde los impuestos no se recaudan adecuadamente. Esto empeoró
la capacidad del Estado para generar ingresos.
Fuente: BCRP Reporte de
Inflación
Fuente:
MEF Reporte de Ejecución Presupuestal
Los datos extraídos del BCRP estaban en formato sacados mensualmente
por año, proseguimos a sacar la media correspondiente por año y se
consiguió la siguiente tabla:
# Tu código completo de procesamiento de datos aquí
ingresos <- read.csv("Mensuales-20241114-214555.csv", header = TRUE, sep = ",")
gastos <- read.csv("Mensuales-20241114-214603.csv", header = TRUE, sep = ",")
# Eliminando la primera fila
ingresos <- ingresos[-1, ]
gastos <- gastos[-1, ]
# Cambiando nombre de las columnas
ingresos %>%
rename(ingresos = PN02311FM, mes = X) -> ingresos
gastos %>%
rename(gastos = PN02409FM, mes = X) -> gastos
# Convertir columnas a numérico
gastos$gastos <- as.numeric(gastos$gastos)
ingresos$ingresos <- as.numeric(ingresos$ingresos)
# Calcular promedios anuales
ingresos_2014 <- mean(ingresos$ingresos[133:144]) %>% round()
ingresos_2015 <- mean(ingresos$ingresos[145:156]) %>% round()
ingresos_2016 <- mean(ingresos$ingresos[157:168]) %>% round()
ingresos_2017 <- mean(ingresos$ingresos[169:180]) %>% round()
ingresos_2018 <- mean(ingresos$ingresos[181:192]) %>% round()
ingresos_2019 <- mean(ingresos$ingresos[193:204]) %>% round()
ingresos_2020 <- mean(ingresos$ingresos[205:216]) %>% round()
ingresos_2021 <- mean(ingresos$ingresos[217:228]) %>% round()
ingresos_2022 <- mean(ingresos$ingresos[229:240]) %>% round()
ingresos_2023 <- mean(ingresos$ingresos[241:252]) %>% round()
ingresos_2024 <- mean(ingresos$ingresos[253:262]) %>% round()
gastos_2014 <- mean(gastos$gastos[97:108]) %>% round()
gastos_2015 <- mean(gastos$gastos[109:120]) %>% round()
gastos_2016 <- mean(gastos$gastos[121:132]) %>% round()
gastos_2017 <- mean(gastos$gastos[133:144]) %>% round()
gastos_2018 <- mean(gastos$gastos[145:156]) %>% round()
gastos_2019 <- mean(gastos$gastos[157:168]) %>% round()
gastos_2020 <- mean(gastos$gastos[169:180]) %>% round()
gastos_2021 <- mean(gastos$gastos[181:192]) %>% round()
gastos_2022 <- mean(gastos$gastos[193:204]) %>% round()
gastos_2023 <- mean(gastos$gastos[205:216]) %>% round()
gastos_2024 <- mean(gastos$gastos[217:226]) %>% round()
anio <- c(2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024)
gastos <- c(
gastos_2014, gastos_2015, gastos_2016, gastos_2017, gastos_2018,
gastos_2019, gastos_2020, gastos_2021, gastos_2022, gastos_2023, gastos_2024
)
ingresos <- c(
ingresos_2014, ingresos_2015, ingresos_2016, ingresos_2017, ingresos_2018,
ingresos_2019, ingresos_2020, ingresos_2021, ingresos_2022, ingresos_2023, ingresos_2024
)
df <- data.frame(
anio,
gastos,
ingresos
)
df_tabla <- df |> rename( 'Año' = 1, 'Gastos' = 2, 'Ingresos' = 3)
knitr::kable(df_tabla, format = "html", align = "c")
| Año | Gastos | Ingresos |
|---|---|---|
| 2014 | 10315 | 10674 |
| 2015 | 10824 | 10258 |
| 2016 | 10899 | 10211 |
| 2017 | 11652 | 10531 |
| 2018 | 12434 | 11880 |
| 2019 | 12865 | 12653 |
| 2020 | 14795 | 10656 |
| 2021 | 16183 | 15323 |
| 2022 | 17210 | 17260 |
| 2023 | 17466 | 16485 |
| 2024 | 18012 | 16969 |
El gráfico refleja el impacto económico en Perú desde el 2014 hasta
el 2024, con un enfoque en la pandemia de COVID-19. Este periodo, que
comenzó en 2020, trajo consigo severas implicancias económicas tanto a
nivel macroeconómico como para los hogares y las empresas.
# Haciendo el gráfico
# Crear un data frame con los presidentes y rutas de imágenes
presidentes <- c(
"ollanta.png", "ppk.png", "vizcarra.png",
"sagasti.png", "castillo.png", "dina.png"
)
ruta_imagenes <- here("images")
imagenes_df <- data.frame(
x = c(2015, 2017.41, 2019.58, 2021.24, 2022.28, 2023.77),
y = rep(-4800, 6), # Ajustar la posición de las imágenes
imagen = file.path(ruta_imagenes, presidentes)
)
imagenes_df$presidente <- c("Ollanta\nHumala", "Pedro\nKuczynski",
"Martín\nVizcarra","Francisco\nSagasti",
"Pedro\nCastillo","Dina\nBoluarte")
# Ruta de la imagen de la leyenda
leyenda <- data.frame(x = 2015, y = 20000, image = 'leyendaoficial.png')
# Paletas de colores
pal_leo <- '#FD7600'
pal_gf <- '#24C4C4'
pal_bg <- '#030623'
pal_annotate <- '#B6B6B6'
# Modificar los años a formato abreviado
df$anio_abreviado <- str_sub(df$anio, 3, 4) # Extrae los últimos dos dígitos del año
df$anio_abreviado <- paste0(df$anio_abreviado, "'") # Agrega el apóstrofe
# Gráfico del Ingreso----------------
ggplot(df) +
aes(anio) +
# Escala del eje Y
scale_y_continuous(
breaks = seq(0, 25000, 5000),
labels = seq(0, 25000, 5000)
) +
# Líneas horizontales personalizadas
geom_segment(
data = data.frame(
x = 2014,
xend = 2016,
y = 25000,
color = pal_leo,
size = 0.5
),
mapping = aes(
x = x,
xend = xend,
y = y,
yend = y,
color = color,
size = size
)
) +
# Leyenda
geom_image(data = leyenda, aes(x = x, y = y , image = image),
size = 0.15) +
geom_point(
mapping = aes(
x = 2015,
y = 25000
),
shape = 21,
color = pal_leo,
fill = pal_bg,
size = 4
) +
annotate(
geom = "text",
y = 20000,
x = 2016.5,
label = "Ingresos",
color = pal_gf,
hjust = 0,
size = 4.5
) +
annotate(
geom = "text",
y = 25000,
x = 2016.5,
label = "Gastos",
color = pal_leo,
hjust = 0,
size = 4.5
) +
scale_size_identity() +
# Gráfica de Ingresos
geom_bar(
aes(y = ingresos),
stat = 'identity',
fill = pal_gf
) +
theme(
panel.background = element_rect(fill = pal_bg, color = NA),
plot.background = element_rect(fill = pal_bg),
plot.title = element_markdown(size = 22, hjust = 0,
margin = margin(b = 10)),
plot.subtitle = element_text(size = 15, hjust = 0),
text = element_text(color = "white"),
plot.margin = margin(t = 30, l = 10, r = 10),
panel.grid = element_blank(),
axis.text.y = element_text(color = "white"),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
legend.position = 'none'
) +
#Contando una historia
gghighlight(
anio %in% c(2020, 2021, 2022),
use_direct_label = FALSE,
unhighlighted_params = list(color = "grey50")
) +
annotate(geom="text",
label="Pandemia COVID-19",
x=2021,
y=27000,
color='white'
) +
# Flechas y segmentos
# Segmentos horizontales
geom_segment(
data = data.frame(
inicio = c(2013.5, 2016.63, 2018.3, 2020.96, 2021.63, 2023.04),
fin = c(2016.53, 2018.2, 2020.86, 2021.53, 2022.94, 2024.5)
),
aes(
x = inicio,
xend = fin,
y = -2300,
yend = -2300
),
color = "#24C4C4",
size = 0.6
) +
# Segmentos verticales de inicio
geom_segment(
data = data.frame(
inicio = c(2016.63, 2018.3, 2020.96, 2021.63, 2023.04),
y = -2300
),
aes(
x = inicio,
xend = inicio,
y = y,
yend = -1500
),
color = "#24C4C4",
size = 0.6
) +
# Segmentos verticales de fin
geom_segment(
data = data.frame(
fin = c(2016.53, 2018.2, 2020.86, 2021.53, 2022.94),
y = -2300
),
aes(
x = fin,
xend = fin,
y = y,
yend = -1500
),
color = "#24C4C4",
size = 0.6
) +
# Segmentos verticales de enlace
geom_segment(
data = data.frame(
fin = c(2015, 2017.41, 2019.58, 2021.24, 2022.28, 2023.77),
y = -3500
),
aes(
x = fin,
xend = fin,
y = y,
yend = -2300
),
color = "#24C4C4",
size = 0.6
) +
# Segmentos de continuidad
geom_segment(
data = data.frame(
p_susp = c(2013.45, 2013.4, 2013.35, 2024.55, 2024.6, 2024.65),
y = -2300
),
aes(
x = p_susp,
xend = p_susp,
y = y,
yend = -2400
),
color = "#24C4C4",
size = 0.6
) +
# Eje X
geom_text(
data = df,
aes(
x = anio,
y = -1200,
label = anio_abreviado # Usa la columna abreviada
),
color = "white",
vjust = -0.15,
size = 4.5
) +
theme(legend.position = "none") +
# Imágenes de presidentes
geom_image(
data = imagenes_df,
aes(
x = x,
y = y,
image = imagen
),
size = 0.09
) +
# Nombres de los presidentes debajo de las imágenes
geom_text(
data = imagenes_df,
aes(
x = x,
y = y - 3000, # Ajustar la posición vertical
label = presidente
),
color = "white",
size = 4.2,
hjust = 0.5
) +
# Gráfica de Gastos
geom_line(aes(y = gastos), color = pal_leo, size = 0.8) +
geom_point(
aes(y = gastos),
shape = 21,
color = pal_leo,
fill = pal_bg,
size = 4
) +
scale_x_continuous(
breaks = seq(2014, 2024, 1),
) +
labs(
title = '',
x = '',
y = ''
) +
#Preatentivo sobre el rango de tiempo de la pandemia de la covid-19
geom_segment(
data = data.frame(
rango = c(2019.55, 2022.45),
y = 0
),
aes(
x = rango,
xend = rango,
y = y,
yend = 27000
),
color = "white",
size = 0.1,
linetype = "dashed"
) +
#Título y subtítulo de la gráfica
labs(title = "<span style='color:#FD7600;'>Crisis</span> y <span style='color:#24C4C4;'>Crecimiento</span> en la economía del Perú durante la pandemia",
subtitle = 'Los ingresos aumentan progresivamente durante la pandemia (2020-2022),
marcando una senda de recuperación.'
)
El gráfico incluye:
Imágenes de presidentes: Representan los cambios de gobierno durante el período analizado.
Anotaciones: Señalan eventos significativos, como la pandemia de COVID-19.
Diferenciación visual: Barras azules para ingresos, línea naranja para gastos.
Tania Shapiro es una experta en ciencia
de datos y visualización que ha ganado reconocimiento por sus
contribuciones al análisis de datos y la comunicación visual efectiva.
Es autora de múltiples proyectos en GitHub, donde comparte códigos,
tutoriales y ejemplos de gráficos avanzados realizados con herramientas
como R y ggplot2.
↩︎
GitHub es una plataforma de desarrollo colaborativo y control de versiones basada en la web, que permite a los desarrolladores almacenar, gestionar y compartir sus proyectos de software.↩︎
El Banco Central de Reserva del Perú (BCRP) es la entidad responsable de preservar la estabilidad monetaria en el país. Fundado el 9 de marzo de 1922, el BCRP tiene como principal función regular la emisión de moneda y diseñar políticas para controlar la inflación, promoviendo un entorno económico estable. Entre sus tareas clave están manejar las reservas internacionales, emitir billetes y monedas, y supervisar el sistema financiero para garantizar su liquidez.↩︎