Column

Utilidad

Margen de Utilidad

Tabla de Utilidad Pais-Margen

Pais Utilidad Margen
Estados Unidos 165136069.0 24.47
China 86940559.4 16.71
Alemania 83741341.1 25.75
India 77983958.9 18.72
Canadá 48144942.6 20.57
Brasil 17902042.8 19.46
Nigeria 14641353.3 18.26
Indonesia 11707862.6 10.30
Japón 11460255.6 21.26
México 10371732.8 18.22
Rusia 8473675.1 13.17
Filipinas 7837898.9 17.46
Tailandia 7323184.8 20.76
Turquía 7094836.9 20.61
Sudáfrica 6814250.1 24.36
Irán 6785851.5 17.26
Egipto 6388545.1 14.86
Italia 5822753.4 18.99
Tanzania 5110782.3 20.25
Francia 5045354.1 13.68
Colombia 4952445.5 20.11
Sudán 4580923.2 23.76
Reino Unido 4506864.4 14.36
República de Corea 4381774.2 18.89
Ucrania 4268752.9 19.77
Argentina 3981784.7 19.84
Kenia 3909205.5 18.25
Australia 3752483.6 29.42
Perú 3590116.8 22.27
Venezuela 3277470.7 20.83
Polonia 3047573.0 16.26
España 3036738.1 13.61
Yemen 2816787.2 20.86
Angola 2740706.4 20.44
Argelia 2723311.8 13.86
Malasia 2547326.9 17.67
Camerún 2358158.3 19.58
Chile 2057039.2 19.96
Bélgica 1483005.4 18.84
Ecuador 1202776.5 15.26
República Checa 998320.4 21.00
Suecia 911471.8 20.29
Guatemala 892051.2 10.82
Austria 884768.4 19.72
Portugal 848968.0 17.44
Israel 848457.5 20.73
Eslovaquia 751832.0 21.43
Suiza 724504.7 20.05
Grecia 720798.6 10.51
República Dominicana 720749.7 14.62
Finlandia 533623.1 13.23
Nueva Zelanda 511664.5 21.09
Costa Rica 468511.7 20.33
Hungría 465603.3 10.55
Irlanda 454119.0 20.22
Noruega 431560.8 18.67
Total 671109499.3 19.95

Column

M.Utilidad Por Año, Trimestre y Continente

Utilidad por Pais y Continente

Column

Utilidad por Continente

Utilidad por Categoria Producto

Utilidad por Tipo Producto

---
title: "Analisis de Utilidad y Márgenes"
author: 
  - "Denalyn Saray Aguilar Garcia,  "
  - " Sofia Torres Mendoza"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
    source_code: embed
---

```{r setup, include=FALSE}
#Importación de librerias 
library(flexdashboard) #Creación del dashboard
library(ggplot2) #Visualización de gráficos
library(dplyr) #Manipulación de datos como filtrado, seleccion, agrupación, entre otros
library(tidyverse) #Conjunto de paquetes que inclute dplyr, ggplot2, etc
library(ggrepel)  #Añadir etiquetas a los gráficos de ggplot2 
library(treemapify) #Para hacer gráficos tipo treemap
library(maps) #Usar mapas básicos y proporciona datos geográficos y funciones para graficarlas
library(countrycode) #Convertir nombres y códigos de países
library(knitr) #Mostrar resultados en documentos y generar documentos dinámicos
library(kableExtra) #Mejorar el estilo de tablas
library(rnaturalearth) #Usar mapas del mundo detallados y acceder a datos geográficos del Natural Earth 
library(sf) #Trabajar con datos espaciales (mapas)
library(leaflet) #Hacer mapas interactivos
library(RColorBrewer) #Usar paletas de colores 
library(grid) #Detalles gráficos avanzados
library(png) #Uso de imagenes en el dashboard
library(readxl) #Leer archivos de excel
library(scales)  # Para formatear porcentajes
library(plotly) #Para crear gráficos interactivos
library(tibble) #Para crear el diccionario de países


```

```{r}
#Cargar y preparar los datos del dataset

Appol_Datos <- read_excel("Appol Datos.xlsx", sheet = "Tabla Datos") #Leer el dataset y leer la hoja "Tabla Datos"
Appol_Datos_Productos <- read_excel("Appol Datos.xlsx", sheet = "Tabla Productos") #Leer el dataset y leer la hoja "Tabla Productos"

Appol_Datos <- Appol_Datos %>% 
  mutate( Utilidad = Ingresos - Gastos) #Crear nueva columna: Utilidad = Ingresos - Gastos

Appol_Datos <- Appol_Datos %>% 
  mutate( Margen = Utilidad/Ingresos) #Crear nueva columna: Margen = Utilidad / Ingresos

Appol_Datos <- Appol_Datos %>% 
  #Separar la columna Region en "codigo_pais" y "resto"
  separate(Region, into = c("codigo_pais", "resto"), sep = " - ") %>%
  #Luego separar "resto" en continente y pais
  separate(resto, into = c("continente", "pais"), sep = "/")

Appol_Datos <- Appol_Datos %>% 
  separate(Periodo, into = c("trimestre", "año"), sep = " ") #Separar periodo en trimestre y año y se hagan las columnas
```

## Column {data-width="650"}

### Utilidad

```{r}
#Creación de la primera tarjeta de utilidad 

img <- readPNG("imageapple.png") #Cargar imagen PNG 
img_grob <- rasterGrob(img, interpolate = TRUE) #Convertir imagen a objeto gráfico compatible con ggplot

#Cálculo de utilidad
total_utilidad <- sum(Appol_Datos$Utilidad, na.rm = TRUE) #Sumar la columna Utilidad
utilidad_millones <- format(round(total_utilidad / 1e6, 2), decimal.mark = ",", big.mark = ".") #Convertir a millones y dar formato
texto_utilidad <- paste(utilidad_millones, "mill.") #Se agrega al texto

#Crear la tarjeta visual con la imagen
ggplot() +
  annotation_custom(img_grob, xmin = 0.8, xmax = 1.2, ymin = 1.3, ymax = 1.7) +  #Mostrar imagen y ajustar el tamaño
  annotate("text", x = 1, y = 1.15, label = texto_utilidad, size = 16, fontface = "bold") + # Mostrar texto de utilidad
  annotate("text", x = 1, y = 0.8, label = "UTILIDAD", size = 10, color = "gray40") + #Mostrar etiqueta "UTILIDAD"
  
  # Ajustar límite del eje X y el eje Y
  xlim(0, 2) +
  ylim(0, 2)+
  theme_void() +
  theme(
    plot.background = element_rect(fill = "white", color = "gray80", size = 1), #Estilo del fondo de la tarjeta
    plot.margin = margin(15, 15, 15, 15, unit = "pt") #Margenes del grafico
  )


```

### Margen de Utilidad

```{r}
#Creación de la segunda tarjeta del margen de utilidad 

img <- readPNG("imageapple.png") #Cargar imagen PNG 
img_grob <- rasterGrob(img, interpolate = TRUE) #Convertir imagen a objeto gráfico compatible con ggplot

#Calcula el margen total como utilidad total / ingresos totales
Appol_summary <- Appol_Datos %>% 
  summarise(MargenTotal = sum(Utilidad, na.rm = TRUE) / sum(Ingresos, na.rm = TRUE))

#Extrae el valor del margen calculado
margen_total <- Appol_summary$MargenTotal

#Crear la tarjeta visual con la imagen
ggplot() +
  annotation_custom(img_grob, xmin = 0.8, xmax = 1.2, ymin = 1.3, ymax = 1.7) +  #Mostrar imagen y ajustar el tamaño
  # Mostrar el porcentaje el margen con 2 decimales
  annotate("text", x = 1, y = 1.15, label =percent(margen_total, accuracy = 0.01), size = 16, fontface = "bold") + 
  annotate("text", x = 1, y = 0.8, label = "MARGEN", size = 10, color = "gray40") + #Mostrar etiqueta "MARGEN"
  
  # Ajustar límite del eje X y el eje Y
  xlim(0, 2) +
  ylim(0, 2)+
  theme_void() +
  theme(
    plot.background = element_rect(fill = "white", color = "gray80", size = 1), #Estilo del fondo de la tarjeta
    plot.margin = margin(15, 15, 15, 15, unit = "pt") #Margenes del grafico
  )

 
```

### Tabla de Utilidad Pais-Margen

```{r}
#Tabla de utilidad de Pais-Margen

#Crear y ordenar la tabla
tabla_pais <- Appol_Datos %>%
  group_by(pais) %>%
  summarise(
    Utilidad = sum(Utilidad, na.rm = TRUE), #Suma total de utilidad por pais
    Ingresos = sum(Ingresos, na.rm = TRUE) #Suma total de ingresos por pais
  ) %>%
  mutate(
    Margen = round((Utilidad / Ingresos) * 100, 2) #Se calcula el margen (%) con 2 decimales
  ) %>%
  arrange(desc(Utilidad)) %>% #Ordena de mayor a menor según utilidad (Forma descendiente)
  select(Pais = pais, Utilidad, Margen) #Renombra columna "pais" a "Pais" y selecciona columnas

# Agregar una fila con los totales
total_fila <- tibble(
  Pais = "Total", #Se define el nombre de la fila como "Total"
  Utilidad = sum(tabla_pais$Utilidad, na.rm = TRUE), #Se calcula la suma total de la utilidad de todos los países
  #Fórmula del margen total: (Utilidad total / Ingresos totales) * 100
  Margen = round((sum(tabla_pais$Utilidad, na.rm = TRUE) / sum(Appol_Datos$Ingresos, na.rm = TRUE)) * 100, 2)
)

# Unir la fila total a la tabla
tabla_pais_final <- bind_rows(tabla_pais, total_fila)

#Mostrar tabla con estilo
tabla_pais_final %>%
  kable("html", align = "c") %>% #Convierte la tabla a HTML y centra el contenido
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"),  #Agrega estilo visual
                full_width = F,  #La tabla no ocupa todo el ancho
                position = "center") %>%  #Centra la tabla en la página
  row_spec(0, bold = TRUE, color = "white", background = "#4B0082") %>%  #Estilo de la fila del encabezado
  row_spec(nrow(tabla_pais_final), bold = TRUE, color = "white", background = "#4B0082") #Estilo de la fila "Total"


```

## Column {data-width="650"}

### M.Utilidad Por Año, Trimestre y Continente

```{r}
#Creación de la grafica de M.Utilidad por Año, Trimestre y Continente

# Paleta de colores personalizada
colores_continentes <- c(
  "América" = "#1f77b4",  #Azul
  "Asia" = "#08306b",     #Azul oscuro
  "Europa" = "#e6550d",   #Naranja
  "África" = "#6a3d9a",   #Morado
  "Oceanía" = "#e377c2"   #Rosado
)

#1. Crear etiqueta combinada con "T" y salto de línea para el año
Appol_Datos <- Appol_Datos %>%
  mutate(trimestre_limpio = str_replace(trimestre, "Q", ""), #Elimina la Q del trimestre (por ejemplo, Q1 -> 1)
         eje_x = paste0("T", trimestre_limpio, "\n", año))   #Crea una nueva variable para el eje X con un formato y combina trimestre y año

#2. Agrupar por esa nueva variable y continente
df_resumen <- Appol_Datos %>%
  group_by(eje_x, continente) %>% #Agrupa los datos por la nueva etiqueta eje_x y por continente
  summarise(UtilidadTotal = sum(Utilidad, na.rm = TRUE), .groups = "drop") # Calcula la suma total de utilidad por grupo y elimina los atributos de agrupación después del resumen

#3. Asegurar orden correcto en el eje X
df_resumen$eje_x <- factor(df_resumen$eje_x,  #Convierte eje_x en factor
  levels = unique(Appol_Datos[order(Appol_Datos$año, Appol_Datos$trimestre), ]$eje_x)) #Define el orden basado en año y trimestre

#4. Gráfico de líneas con colores personalizados
ggplot(df_resumen, aes(x = eje_x, y = UtilidadTotal, color = continente, group = continente)) +
  geom_line(size = 1.2) + # Dibuja líneas entre puntos por continente, con un respectivo grosor de línea
  geom_point(size = 2) + # Agrega puntos en cada observación con el respectivo tamaño
  labs(x = "Trimestre", #Etiqueta del eje X
       y = "Suma de Utilidad") + #Etiqueta del eje Y
  theme_minimal() + #Usa un tema limpio y simple
  theme(
    axis.text.x = element_text(size = 10) #Ajusta el tamaño del texto en el eje X
  ) +
  scale_color_manual(values = colores_continentes)  #Aplica la paleta de colores definida por continente


```

### Utilidad por Pais y Continente

```{r}
#Creación del mpapa de utilidad por pais y continente

#Crear un diccionario de traducciones Español -> Inglés
diccionario_paises <- tibble::tibble(
  pais = c("Afganistán", "Albania", "Alemania", "Andorra", "Angola", "Antigua y Barbuda", "Arabia Saudita", "Argelia", "Armenia", "Australia", "Austria", "Azerbaiyán",
           "Bahamas", "Bangladés", "Barbados", "Baréin", "Bélgica", "Belice", "Benín", "Bielorrusia", "Birmania", "Botsuana", "Brasil", "Brunéi", "Bulgaria",
           "Burkina Faso", "Burundi", "Bután", "Cabo Verde", "Camboya", "Camerún", "Canadá", "Chad", "Chile", "China", "Chipre", "Colombia", "Comoras", 
           "Congo", "Congo, República Democrática del", "Corea del Norte", "Corea del Sur", "Costa Rica", "Costa de Marfil", "Croacia", "Cuba", "Curazao", "Chipre", "Chequia", "Dinamarca", "Dominica", "Ecuador", 
           "Egipto", "El Salvador", "Emiratos Árabes Unidos", "Eritrea", "Eslovaquia", "Eslovenia", "España", "Estados Unidos", "Estonia", "Etiopía", "Fiyi", "Filipinas", "Finlandia",
           "Francia", "Gabón", "Gambia", "Gana", "Georgia", "Ghana", "Granada", "Grecia", "Groenlandia", "Guatemala", "Guinea", "Guinea Ecuatorial", "Guinea-Bisáu", "Guyana", "Haití", 
           "Honduras", "Hungría", "India", "Indonesia", "Irak", "Irán", "Irlanda", "Islandia", "Islas Marshall", "Islas Salomón", "Islas Caimán", "Israel", "Italia", 
           "Jamaica", "Japón", "Jordania", "Kazajistán", "Kenia", "Kirguistán", "Kiribati", "Kosovo", "Kuwait", "Laos", "Lesoto", "Letonia", "Líbano", "Liberia", 
           "Libia", "Liechtenstein", "Lituania", "Luxemburgo", "Macedonia del Norte", "Madagascar", "Malasia", "Malawi", "Maldivas", "Malí", "Malta", "Marruecos", "Mauricio", 
           "Mauritania", "México", "Micronesia", "Moldavia", "Mónaco", "Mongolia", "Montenegro", "Mozambique", "Namibia", "Naurú", "Nepal", "Nicaragua", 
           "Níger", "Nigeria", "Noruega", "Nueva Zelanda", "Omán", "Países Bajos", "Pakistán", "Palau", "Palestina", "Panamá", "Papúa Nueva Guinea", "Paraguay", "Perú", 
           "Polonia", "Portugal", "Qatar", "Reino Unido", "República Centroafricana", "República Checa", "República Dominicana", "Ruanda", "Rumanía", "Rusia", "Samoa", "San Cristóbal y Nieves", 
           "San Marino", "San Vicente y las Granadinas", "Santa Lucía", "Santo Tomé y Príncipe", "Senegal", "Serbia", "Seychelles", "Sierra Leona", 
           "Singapur", "Siria", "Somalia", "Sri Lanka", "Sudáfrica", "Sudán", "Sudán del Sur", "Suecia", "Suiza", "Surinam", "Tailandia", "Taiwán", "Tanzania", 
           "Tayikistán", "Timor Oriental", "Togo", "Tonga", "Trinidad y Tobago", "Túnez", "Turkmenistán", "Turquía", "Tuvalu", "Ucrania", "Uganda", "Uruguay", 
           "Uzbekistán", "Vanuatu", "Vaticano", "Venezuela", "Vietnam", "Yemen", "Yibuti", "Zambia", "Zimbabue"),
  
  pais_ingles = c("Afghanistan", "Albania", "Germany", "Andorra", "Angola", "Antigua and Barbuda", "Saudi Arabia", "Algeria", "Armenia", "Australia", "Austria", "Azerbaijan",
                  "Bahamas", "Bangladesh", "Barbados", "Bahrain", "Belgium", "Belize", "Benin", "Belarus", "Myanmar", "Botswana", "Brazil", "Brunei", "Bulgaria",
                  "Burkina Faso", "Burundi", "Bhutan", "Cape Verde", "Cambodia", "Cameroon", "Canada", "Chad", "Chile", "China", "Cyprus", "Colombia", "Comoros",
                  "Congo", "Democratic Republic of the Congo", "North Korea", "South Korea", "Costa Rica", "Ivory Coast", "Croatia", "Cuba", "Curacao", "Cyprus", "Czech Republic", "Denmark", "Dominica", "Ecuador",
                  "Egypt", "El Salvador", "United Arab Emirates", "Eritrea", "Slovakia", "Slovenia", "Spain", "United States", "Estonia", "Ethiopia", "Fiji", "Philippines", "Finland",
                  "France", "Gabon", "Gambia", "Ghana", "Georgia", "Ghana", "Grenada", "Greece", "Greenland", "Guatemala", "Guinea", "Equatorial Guinea", "Guinea-Bissau", "Guyana", "Haiti",
                  "Honduras", "Hungary", "India", "Indonesia", "Iraq", "Iran", "Ireland", "Iceland", "Marshall Islands", "Solomon Islands", "Cayman Islands", "Israel", "Italy",
                  "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kyrgyzstan", "Kiribati", "Kosovo", "Kuwait", "Laos", "Lesotho", "Latvia", "Lebanon", "Liberia",
                  "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "North Macedonia", "Madagascar", "Malaysia", "Malawi", "Maldives", "Mali", "Malta", "Morocco", "Mauritius",
                  "Mauritania", "Mexico", "Micronesia", "Moldova", "Monaco", "Mongolia", "Montenegro", "Mozambique", "Namibia", "Nauru", "Nepal", "Nicaragua",
                  "Niger", "Nigeria", "Norway", "New Zealand", "Oman", "Netherlands", "Pakistan", "Palau", "Palestine", "Panama", "Papua New Guinea", "Paraguay", "Peru", "Poland", 
                  "Portugal", "Qatar", "United Kingdom", "Central African Republic", "Czech Republic", "Dominican Republic", "Rwanda", "Romania", "Russia", "Samoa", "Saint Kitts and Nevis", 
                  "San Marino", "Saint Vincent and the Grenadines", "Saint Lucia", "São Tomé and Príncipe", "Senegal", "Serbia", "Seychelles", "Sierra Leone", 
                  "Singapore", "Syria", "Somalia", "Sri Lanka", "South Africa", "Sudan", "South Sudan", "Sweden", "Switzerland", "Suriname", "Thailand", "Taiwan", "Tanzania", 
                  "Tajikistan", "Timor-Leste", "Togo", "Tonga", "Trinidad and Tobago", "Tunisia", "Turkmenistan", "Turkey", "Tuvalu", "Ukraine", "Uganda", "Uruguay", 
                  "Uzbekistan", "Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Yemen", "Djibouti", "Zambia", "Zimbabwe")
)

# Colores por continente y paleta de colores
colores_continentes <- c(
  "América" = "#1f77b4",  #Azul
  "Asia" = "#08306b",     #Azul oscuro
  "Europa" = "#e6550d",   #Naranja
  "África" = "#6a3d9a",   #Morado
  "Oceanía" = "#e377c2"   #Rosado
)

# Agrupar los datos
df_mapa <- Appol_Datos %>%
  group_by(pais, continente) %>%
  summarise(UtilidadTotal = sum(Utilidad, na.rm = TRUE), .groups = "drop")

# Unir con la tabla de traducción
df_mapa <- df_mapa %>%
  left_join(diccionario_paises, by = "pais")

# Crear el gráfico
fig <- plot_ly(
  data = df_mapa,
  type = 'scattergeo',
  locationmode = 'country names',
  locations = ~pais_ingles,
  text = ~paste("País:", pais, "<br>Continente:", continente, "<br>Utilidad:", round(UtilidadTotal, 2)),
  marker = list(
    size = ~log1p(UtilidadTotal) * 1.5,
    line = list(width = 0.5, color = 'black'),
    opacity = 0.8
  ),
  color = ~continente,
  colors = colores_continentes
)

fig <- fig %>% layout(
  autosize = TRUE,
  height = 400,  # Altura
  margin = list(l = 0, r = 0, t = 0, b = 0),  # Márgenes del mapa
  geo = list(
    showframe = FALSE,
    showcoastlines = TRUE,
    projection = list(type = 'miller'),
    resolution = 50,
    landcolor = "rgb(230, 230, 230)",
    oceancolor = "rgb(222, 240, 247)",
    showland = TRUE,
    showocean = TRUE,
    lakecolor = "rgb(222, 240, 247)",
    showlakes = TRUE,
    bgcolor = 'rgb(150, 150, 150)',  # Fondo gris más oscuro
    showcountries = TRUE,
    countrycolor = "rgb(200, 200, 200)",
    coastlinecolor = "rgb(190, 190, 190)",
    lataxis = list(showgrid = TRUE, gridcolor = 'rgb(210, 210, 210)'),
    lonaxis = list(showgrid = TRUE, gridcolor = 'rgb(210, 210, 210)')
  ),
  legend = list(
    title = list(text = 'Continentes'),
    orientation = "h",
    x = 0,  #Orientación en el eje x de la sección de continentes
    y = 1.1  #Orientación en el eje y de la sección de continentes
  )
)

# Agrega nombres de los continentes
fig <- fig %>% add_annotations(
  x = c(-50, -60, 80, 15, 130),
  y = c(40, -20, 30, 45, -25),
  text = c("AMERICA DEL NORTE", "AMERICA DEL SUR", "ASIA", "EUROPA", "OCEANÍA", "AFRICA"),
  showarrow = FALSE,
  font = list(size = 4, color = c("#1f77b4", "#1f77b4", "#08306b", "#e6550d", "#E77BC0", "#6a3d9a")),
  xanchor = 'center',
  yanchor = 'top'
)

# Agrega nombres de los océanos con color y tamaño reducido
fig <- fig %>% add_annotations(
  x = c(-40, 70, 180),
  y = c(20, -20, 0),
  text = c("Océano Atlántico", "Océano Índico", "Océano Pacífico"),
  showarrow = FALSE,
  font = list(size = 8, color = "navy", opacity = 0.7),
  xanchor = 'center',
  yanchor = 'top'
)

fig
```

## Column {data-width="650"}

### Utilidad por Continente

```{r}
#Creación de la grafica circular de utilidad por continente

#Agrupar utilidad por continente
utilidad_continente <- Appol_Datos %>%
  group_by(continente) %>% #Agrupa los datos según el continente
  summarise(Utilidad = sum(Utilidad, na.rm = TRUE)) %>% #Suma total de la columna Utilidad por continente
  mutate(Percent = Utilidad / sum(Utilidad), #Calcula el porcentaje que representa cada continente del total
         Label = paste0(continente, "\n", percent(Percent))) #Crea una etiqueta con nombre y porcentaje para cada continente

#Paleta de colores 
colores_continentes <- c(
  "América" = "#1f77b4",  #Azul
  "Asia" = "#08306b",     #Azul oscuro
  "Europa" = "#e6550d",   #Naranja
  "África" = "#6a3d9a",   #Morado
  "Oceanía" = "#e377c2"   #Rosado
)

#Crear un gráfico de dona 
ggplot(utilidad_continente, aes(x = 2, y = Utilidad, fill = continente)) +
  geom_col(width = 1, color = "white") + #Dibuja las barras como sectores circulares con borde blanco
  coord_polar(theta = "y") + #Convierte las barras en un gráfico circular
  xlim(0.5, 2.5) + #Limita el eje X para crear el efecto de hueco en el centro
  geom_text(aes(label = percent(Percent)),  #Añade etiquetas con el porcentaje dentro de cada sector
            position = position_stack(vjust = 0.5),  #Centra verticalmente las etiquetas dentro de cada sector
            color = "white", size = 4) + #Define color blanco y tamaño del texto
  theme_void() + #Quita ejes, texto, y fondos para un estilo limpio
  theme(legend.title = element_blank()) + #Elimina el título de la leyenda
  scale_fill_manual(values = colores_continentes) #Aplicar los colores


```

### Utilidad por Categoria Producto

```{r}

#Creación del treemap que representa la utilidad total de cada tipo de producto 

#Agrupar por Tipo Producto y sumar la utilidad
df_producto <- Appol_Datos %>%
  group_by(`Tipo Producto`) %>% #Agrupa los datos por la columna "Tipo Producto"
  summarise(UtilidadTotal = sum(Utilidad, na.rm = TRUE)) #Calcula la suma total de utilidad por tipo de producto

#Mapeo de colores
colores_productos <- c(
  "PC" = "#1E90FF",         #Azul claro
  "Aplicaciones" = "#E66A29", #Naranja
  "Celulares" = "#73006E",  #Purpura oscuro
  "Musica" = "#00008B",     #Azul oscuro
  "TV" = "#EB4AB1",         #Rosado
  "Tablets" = "#7956D5",    #Morado
  "Accesorios" = "#DBB400"  #Amarillo dorado
)

#Crear el treemap
ggplot(df_producto, aes(
  area = UtilidadTotal, #El tamaño de cada rectángulo es proporcional a la utilidad total
  fill = `Tipo Producto`, #El color de cada área depende del tipo de producto
  label = `Tipo Producto` #Se muestra el nombre del producto como etiqueta
)) +
  geom_treemap() + #Crea el gráfico de tipo treemap
  geom_treemap_text( #Añade etiquetas de texto dentro de los rectángulos
    colour = "white", #Color del texto
    place = "center", #Ubicación del texto dentro del rectangulo 
    grow = TRUE, #Ajusta el tamaño del texto al espacio disponible
    reflow = TRUE, #Permite que el texto se divida en varias líneas si es necesario
    size = 0.5 #Escala base del tamaño del texto 
  ) +
  scale_fill_manual(values = colores_productos) + #Aplica los colores definidos manualmente a cada producto
  theme(legend.position = "none") #Oculta la leyenda para que no se repitan los nombres ya mostrados en el gráfico

```

### Utilidad por Tipo Producto

```{r}
#Creación del treemap de utilida total por categoria de producto

#1. Unir las dos tablas por Tipo Producto
df_categoria <- Appol_Datos %>%
  left_join(Appol_Datos_Productos, by = "Tipo Producto") #Une la tabla principal con la tabla de productos por la columna "Tipo Producto"

#2. Agrupar por Categoria Producto y calcular la utilidad total
df_categoria_utilidad <- df_categoria %>%
  group_by(`Categoria Producto`) %>% #Agrupa los datos por categoría de producto
  summarise(UtilidadTotal = sum(Utilidad, na.rm = TRUE)) #Calcula la suma total de utilidad por cada categoría

#Asignar colores si solo tenés dos categorías
colores_categoria <- c(
  "Digital" = "#00008B",  #Azul oscuro 
  "Dispositivos" = "#1E90FF" #Azul claro
)

#Creación el treemap
ggplot(df_categoria_utilidad, aes(
  area = UtilidadTotal, #Define el tamaño de cada área según la utilidad
  fill = `Categoria Producto`, #Rellena cada rectángulo según la categoría
  label = `Categoria Producto` #Etiqueta con el nombre de la categoría
)) +
  geom_treemap() + #Dibujo del treemap
  geom_treemap_text( #Agrega texto dentro de los rectángulos
    colour = "white", #Texto en blanco
    place = "centre", #Centrado dentro del área
    grow = TRUE, #Ajusta el tamaño del texto para llenar el espacio disponible
    reflow = TRUE, #Permite que el texto se divida en múltiples líneas si es necesario
    size = 16   #Tamaño base del texto
  ) +
  scale_fill_manual(values = colores_categoria) + #Aplica los colores personalizados definidos arriba
  theme(legend.position = "none") #Oculta la leyenda, ya que las etiquetas en el gráfico la hacen innecesaria
```