Este documento contiene el código en lenguaje R utilizado para generar la figura de análisis visual de indicadores críticos de la cadena cárnica bovina, presentada en la sección 4.6 del trabajo principal del Grupo 4.
# Si es la primera vez, instalar paquetes (descomentar la línea siguiente):
# install.packages(c("ggplot2", "dplyr", "tidyr", "patchwork", "ggrepel", "scales"))
library(ggplot2)
library(dplyr)
library(tidyr)
library(patchwork)
library(ggrepel)
library(scales)
Los datos provienen de la revisión bibliográfica desarrollada en el trabajo principal: Castaño-Sánchez et al. (2023), Dick et al. (2021) y FEDEGAN (2006).
# Dataset ambiental: huella de carbono vs huella hídrica azul
datos_ambientales <- data.frame(
Sistema = c("Finalización en grano\n(EE.UU. - Texas)",
"Finalización pastoril\n(Llanuras del Norte)",
"Finalización pastoril\n(Suroeste EE.UU.)",
"Promedio Brasil\n(LCA, 4 biomas)"),
CO2_eq = c(17.2, 19.5, 24.4, 13.3),
Agua_Azul = c(1976, 476, 1019, 193)
)
# Verificar contenido
datos_ambientales
## Sistema CO2_eq Agua_Azul
## 1 Finalización en grano\n(EE.UU. - Texas) 17.2 1976
## 2 Finalización pastoril\n(Llanuras del Norte) 19.5 476
## 3 Finalización pastoril\n(Suroeste EE.UU.) 24.4 1019
## 4 Promedio Brasil\n(LCA, 4 biomas) 13.3 193
# Dataset productivo: Colombia vs referentes internacionales
datos_productividad <- data.frame(
Indicador = c("Tasa de natalidad (%)",
"Edad al sacrificio (meses)",
"Rendimiento en canal (%)"),
Colombia = c(53, 39, 51),
`EE.UU. (intensivo)` = c(93, 23, 60),
Brasil = c(60, 43, 50),
check.names = FALSE
) %>%
pivot_longer(cols = -Indicador, names_to = "Region", values_to = "Valor") %>%
mutate(
Indicador = factor(Indicador, levels = c("Tasa de natalidad (%)",
"Edad al sacrificio (meses)",
"Rendimiento en canal (%)")),
Region = factor(Region, levels = c("Colombia", "Brasil", "EE.UU. (intensivo)"))
)
# Verificar contenido
datos_productividad
## # A tibble: 9 × 3
## Indicador Region Valor
## <fct> <fct> <dbl>
## 1 Tasa de natalidad (%) Colombia 53
## 2 Tasa de natalidad (%) EE.UU. (intensivo) 93
## 3 Tasa de natalidad (%) Brasil 60
## 4 Edad al sacrificio (meses) Colombia 39
## 5 Edad al sacrificio (meses) EE.UU. (intensivo) 23
## 6 Edad al sacrificio (meses) Brasil 43
## 7 Rendimiento en canal (%) Colombia 51
## 8 Rendimiento en canal (%) EE.UU. (intensivo) 60
## 9 Rendimiento en canal (%) Brasil 50
# Tema unificado para ambos paneles
tema_academico <- theme_minimal(base_size = 12, base_family = "sans") +
theme(
plot.title = element_text(face = "bold", size = 14, color = "#1a1a1a",
margin = margin(b = 4)),
plot.subtitle = element_text(size = 10.5, color = "#4a4a4a",
margin = margin(b = 12)),
plot.caption = element_text(size = 9, color = "#6a6a6a",
hjust = 0, margin = margin(t = 10),
face = "italic"),
axis.title = element_text(face = "bold", size = 11, color = "#2a2a2a"),
axis.title.x = element_text(margin = margin(t = 8)),
axis.title.y = element_text(margin = margin(r = 8)),
axis.text = element_text(size = 10, color = "#3a3a3a"),
panel.grid.major = element_line(color = "#e8e8e8", linewidth = 0.4),
panel.grid.minor = element_blank(),
legend.title = element_text(face = "bold", size = 10),
legend.text = element_text(size = 9.5),
legend.position = "bottom",
plot.background = element_rect(fill = "white", color = NA),
panel.background = element_rect(fill = "white", color = NA),
plot.margin = margin(15, 15, 15, 15)
)
# Paleta institucional académica
paleta_ambiental <- c("#8B4513", "#5B8A3A", "#2E8B57", "#1F6F4A")
paleta_productiva <- c("Colombia" = "#C0392B",
"Brasil" = "#27AE60",
"EE.UU. (intensivo)" = "#2874A6")
p1 <- ggplot(datos_ambientales,
aes(x = CO2_eq, y = Agua_Azul, color = Sistema)) +
# Sombreado de "zona deseable"
annotate("rect", xmin = -Inf, xmax = 15, ymin = -Inf, ymax = 400,
fill = "#5B8A3A", alpha = 0.08) +
annotate("text", x = 13.3, y = 350, label = "Zona deseable\n(menor impacto)",
color = "#5B8A3A", size = 3.2, fontface = "italic", hjust = 0.5) +
geom_point(aes(size = CO2_eq), alpha = 0.85) +
geom_text_repel(aes(label = Sistema),
size = 3.3, fontface = "bold",
box.padding = 0.8, point.padding = 0.5,
segment.color = "#999999", segment.size = 0.4,
min.segment.length = 0,
max.overlaps = Inf) +
scale_color_manual(values = paleta_ambiental) +
scale_size_continuous(range = c(6, 14)) +
scale_x_continuous(limits = c(10, 27), breaks = seq(10, 26, by = 2)) +
scale_y_continuous(labels = comma_format(big.mark = ".", decimal.mark = ","),
limits = c(0, 2200)) +
labs(
title = "Panel a. Paradoja de la eficiencia ambiental",
subtitle = "Huella de carbono vs. huella hídrica azul en sistemas de producción de carne bovina",
x = expression(bold("Huella de carbono ") * "(kg CO"[2]*"eq / kg canal)"),
y = "Huella hídrica azul (L / kg canal)",
caption = "Fuente: elaboración propia con datos de Castaño-Sánchez et al. (2023) y Dick et al. (2021).\nMenor valor en ambos ejes indica menor impacto ambiental."
) +
tema_academico +
theme(legend.position = "none")
p1
p2 <- ggplot(datos_productividad,
aes(x = Indicador, y = Valor, fill = Region)) +
geom_bar(stat = "identity", position = position_dodge(width = 0.78),
width = 0.7, color = "white", linewidth = 0.3) +
geom_text(aes(label = Valor),
position = position_dodge(width = 0.78),
vjust = -0.6, size = 3.5, fontface = "bold", color = "#2a2a2a") +
scale_fill_manual(values = paleta_productiva, name = "País / sistema:") +
scale_y_continuous(limits = c(0, 110), breaks = seq(0, 100, by = 20),
expand = expansion(mult = c(0, 0.05))) +
labs(
title = "Panel b. Brechas productivas: Colombia frente a referentes internacionales",
subtitle = "Comparación de tres indicadores zootécnicos clave",
x = NULL,
y = "Valor del indicador",
caption = "Fuente: elaboración propia con datos de FEDEGAN (2006), Castaño-Sánchez et al. (2023) y Dick et al. (2021).\nValores más altos son favorables en natalidad y rendimiento en canal; más bajos son favorables en edad al sacrificio."
) +
tema_academico
p2
figura_final <- (p1 / p2) +
plot_annotation(
title = "Figura 1. Análisis visual de indicadores críticos de la cadena cárnica bovina",
subtitle = "Tensiones ambientales y brechas productivas identificadas en la revisión bibliográfica",
caption = "Grupo 4 — Atributos de la cadena de carne e indicadores asociados a sostenibilidad",
theme = theme(
plot.title = element_text(face = "bold", size = 16, color = "#1a1a1a",
hjust = 0, margin = margin(b = 4)),
plot.subtitle = element_text(size = 11, color = "#4a4a4a",
hjust = 0, margin = margin(b = 10)),
plot.caption = element_text(size = 9, color = "#6a6a6a",
hjust = 1, face = "italic",
margin = margin(t = 10)),
plot.background = element_rect(fill = "white", color = NA),
plot.margin = margin(20, 20, 20, 20)
)
) +
plot_layout(heights = c(1, 0.9))
figura_final
ggsave(
filename = "figura_indicadores_criticos.png",
plot = figura_final,
width = 11,
height = 11,
units = "in",
dpi = 300,
bg = "white"
)
cat("✅ Imagen exportada exitosamente como: figura_indicadores_criticos.png\n")
## ✅ Imagen exportada exitosamente como: figura_indicadores_criticos.png
cat(" Resolución: 300 dpi | Tamaño: 11 x 11 pulgadas\n")
## Resolución: 300 dpi | Tamaño: 11 x 11 pulgadas
cat(" Ubicación:", getwd(), "\n")
## Ubicación: C:/Users/jgonz/OneDrive/Desktop/UN/2026s1/catedra/Informe2
sessionInfo()
## R version 4.6.0 (2026-04-24 ucrt)
## Platform: x86_64-w64-mingw32/x64
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
## LAPACK version 3.12.1
##
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8 LC_CTYPE=Spanish_Colombia.utf8
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Colombia.utf8
##
## time zone: America/Bogota
## tzcode source: internal
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## other attached packages:
## [1] scales_1.4.0 ggrepel_0.9.8 patchwork_1.3.2 tidyr_1.3.2
## [5] dplyr_1.2.1 ggplot2_4.0.3
##
## loaded via a namespace (and not attached):
## [1] gtable_0.3.6 jsonlite_2.0.0 compiler_4.6.0 tidyselect_1.2.1
## [5] Rcpp_1.1.1-1.1 jquerylib_0.1.4 yaml_2.3.12 fastmap_1.2.0
## [9] R6_2.6.1 labeling_0.4.3 generics_0.1.4 knitr_1.51
## [13] tibble_3.3.1 bslib_0.10.0 pillar_1.11.1 RColorBrewer_1.1-3
## [17] rlang_1.2.0 utf8_1.2.6 cachem_1.1.0 xfun_0.57
## [21] sass_0.4.10 S7_0.2.2 cli_3.6.6 withr_3.0.2
## [25] magrittr_2.0.5 digest_0.6.39 grid_4.6.0 rstudioapi_0.18.0
## [29] lifecycle_1.0.5 vctrs_0.7.3 evaluate_1.0.5 glue_1.8.1
## [33] farver_2.1.2 rmarkdown_2.31 purrr_1.2.2 tools_4.6.0
## [37] pkgconfig_2.0.3 htmltools_0.5.9