---
title: "Taller creación Dashboard Interactivo"
output:
flexdashboard::flex_dashboard:
orientation: columns
social: menu
source_code: embed
---
```{r setup, include=FALSE}
library(flexdashboard)
library(raster)
library(plotly)
library(tidyverse)
library(sf)
library(ggplot2)
library(GWalkR)
library(shiny)
library(leaflet)
library(geojsonio)
library(highcharter)
library(dplyr)
library(viridisLite)
library(forecast)
library(treemap)
library(arules)
library(flexdashboard)
thm <-
hc_theme(
colors = c("#1a6ecc", "#434348", "#90ed7d"),
chart = list(
backgroundColor = "transparent",
style = list(fontFamily = "Source Sans Pro")
),
xAxis = list(
gridLineWidth = 1
)
)
setwd("C://Users//kevin//geo_quindio")
st_drivers()
# Mapas
mapa_quindio <- st_read("C:/Users/kevin/geo_quindio/MGN_NivelMunicipioIntegrado_CNPV-20240925T015102Z-001/MGN_NivelMunicipioIntegrado_CNPV/MGN_ANM_MPIOS.shp")
mapa_clase <- st_read("C:/Users/kevin/geo_quindio/MGN_NivelMunicipio_Clase_Integrado_CNPVL-20240925T020351Z-001/MGN_NivelMunicipio_Clase_Integrado_CNPVL/MGN_ANM_MPIOCL.shp")
mapa_rural <- st_read("C:/Users/kevin/geo_quindio/SHP_MGN2018_INTGRD_SECTR-20240925T021653Z-001/SHP_MGN2018_INTGRD_SECTR/MGN_ANM_SECTOR_RURAL.shp")
mapa_urb <- st_read("C:/Users/kevin/geo_quindio/SHP_MGN2018_INTGRD_SECTU-20240925T022113Z-001/SHP_MGN2018_INTGRD_SECTU/MGN_ANM_SECTOR_URBANO.shp")
mapa_centrosPoblados <- mapa_urb[mapa_urb$CLAS_CCDGO == '2',]
# Quindio
quin_mnpios <- mapa_quindio %>% filter(DPTO_CCDGO == 63)
quin_clase <- mapa_clase %>% filter(DPTO_CCDGO == 63)
quin_rur <- mapa_rural %>% filter(DPTO_CCDGO == 63)
quin_urb <- mapa_urb %>% filter(DPTO_CCDGO == 63)
quin_cp <- mapa_centrosPoblados %>% filter(DPTO_CCDGO == 63)
quin_clase <- mapa_clase %>%
filter(DPTO_CCDGO == 63) %>%
mutate(MPIOS = case_when(
MPIO_CCDGO == 001 ~ "Armenia",
MPIO_CCDGO == 130 ~ "Calarca",
MPIO_CCDGO == 401 ~ "La Tebaida",
MPIO_CCDGO == 594 ~ "Quimbaya",
MPIO_CCDGO == 190 ~ "Circasia",
MPIO_CCDGO == 470 ~ "Montenegro",
MPIO_CCDGO == 690 ~ "Salento",
MPIO_CCDGO == 272 ~ "Filandia",
MPIO_CCDGO == 302 ~ "Genova",
MPIO_CCDGO == 111 ~ "Buenavista",
MPIO_CCDGO == 212 ~ "Cordoba",
MPIO_CCDGO == 548 ~ "Pijao",
TRUE ~ "Armenia"
))
# Leer el shape de municipios del país y transformarlo al sistema CRS 4326 (lat/lon)
mapa_mnpios <- st_read("C:/Users/kevin/geo_quindio/MGN_NivelMunicipioIntegrado_CNPV-20240925T015102Z-001/MGN_NivelMunicipioIntegrado_CNPV/MGN_ANM_MPIOS.shp") %>%
st_transform(crs = 4326)
# Filtrar por el departamento de Quindío (DPTO_CCDGO == 63) y poner en mayúsculas los nombres
quin_mupios <- mapa_mnpios %>%
filter(DPTO_CCDGO == 63) %>%
mutate(MPIO_CNMBR = str_to_title(MPIO_CNMBR))
```
Column {data-width=600}
-----------------------------------------------------------------------
### Conteo de personas por municipio
```{r}
# Agrupar por nombre del municipio y sumar el conteo de personas
quin_mnpios_count <- quin_mnpios %>%
group_by(MPIO_CNMBR) %>%
summarise(total_personas = sum(STP27_PERS, na.rm = TRUE)) %>%
ungroup()
# Crear gráfico de barras interactivo con highcharter
hchart(quin_mnpios_count, "column",
hcaes(x = MPIO_CNMBR, y = total_personas)) %>%
hc_title(text = "Conteo de Personas por Municipio en Quindío") %>%
hc_xAxis(title = list(text = "Municipios"), labels = list(rotation = -45)) %>%
hc_yAxis(title = list(text = "Total Personas")) %>%
hc_tooltip(pointFormat = "<b>{point.x}</b>: {point.y} personas")
```
### Viviendas con internet
```{r}
# Crear una paleta de colores en función del número de viviendas con servicio de internet
paleta_colores <- colorNumeric(
palette = "YlGnBu", # Colores que van del amarillo al azul
domain = quin_mupios$STP19_INT1 # Dominio de valores (número de viviendas con internet)
)
# Crear etiquetas informativas para mostrar en el mapa (al hacer hover sobre un municipio)
etiquetas <- sprintf(
"<strong>%s</strong><br/>Viviendas con internet: %s",
quin_mupios$MPIO_CNMBR, quin_mupios$STP19_INT1
) %>% lapply(htmltools::HTML)
# Crear el mapa con leaflet
leaflet(data = quin_mupios) %>%
addTiles() %>% # Agregar capa base de mapas (OpenStreetMap)
addPolygons(
fillColor = ~paleta_colores(STP19_INT1), # Colorear en función de las viviendas con internet
weight = 1, # Grosor de los límites de los municipios
color = "black", # Color del borde
fillOpacity = 0.7, # Opacidad del relleno
label = etiquetas, # Mostrar información de las viviendas con internet
highlightOptions = highlightOptions(
weight = 3, # Resaltar el borde al hacer hover
color = "white",
bringToFront = TRUE
)
) %>%
addLegend(
pal = paleta_colores,
values = ~STP19_INT1,
opacity = 0.7,
title = "Viviendas con Internet",
position = "bottomright"
)
```
Column {.tabset data-width=400}
-----------------------------------------------------------------------
### Viviendas por municipio
```{r, fig.keep='none'}
# Agrupar por nombre del municipio y sumar el conteo de viviendas
quin_mnpios_viviendas <- quin_mnpios %>%
group_by(MPIO_CNMBR) %>%
summarise(total_viviendas = sum(STVIVIENDA, na.rm = TRUE)) %>%
ungroup()
# Crear el treemap con highcharter
hchart(quin_mnpios_viviendas, "treemap",
hcaes(x = MPIO_CNMBR, value = total_viviendas, color = total_viviendas)) %>%
hc_title(text = "Distribución de Viviendas por Municipio en Quindío") %>%
hc_tooltip(pointFormat = "<b>{point.name}</b>: {point.value} viviendas")
```
### Viviendas con Enegia electrica
```{r}
# Agrupar y contar las viviendas con energía eléctrica por municipio
conteo_viviendas <- quin_clase %>%
group_by(MPIOS) %>%
summarise(ViviendasConEnergia = sum(STP19_EC_1, na.rm = TRUE))
# Crear el gráfico de barras usando highcharter
highchart() %>%
hc_add_series(
data = conteo_viviendas$ViviendasConEnergia,
type = "bar",
name = "Viviendas con Energía",
showInLegend = FALSE,
pointWidth = 10
) %>%
hc_xAxis(categories = conteo_viviendas$MPIOS) %>%
hc_yAxis(title = list(text = "Número de Viviendas")) %>%
hc_title(text = "Viviendas con Energía Eléctrica por Municipio - Quindío") %>%
hc_add_theme(hc_theme_flat())
```