17 Desarrollo de tableros de control

17.1 Resumen

Los tableros de control son interfaces gráficas que presentan conjuntos de visualizaciones como tablas, gráficos y mapas. El paquete flexdashboard de R está orientado a la creación de tableros interactivos mediante R Markdown.

17.2 Trabajo previo

17.2.1 Lecturas

Moraga, P. (2019). Geospatial Health Data: Modeling and Visualization with R-INLA and Shiny (capítulo 12). Chapman & Hall/CRC. https://www.paulamoraga.com/book-geospatial/

17.3 Preparativos

17.3.1 Instalación y carga de paquetes

# Instalación de flexdashboard
install.packages("flexdashboard")
# Carga de flexdashboard
library(flexdashboard)

17.4 Tableros de control

Los tableros de control, también llamados tableros de mando, cuadros de mando o, en inglés, dashboards, son interfaces gráficas que presentan visualizaciones de datos junto con herramientas para controlarlas (ej. acercamientos, alejamientos, búsquedas, ordenamientos, filtros). Estas visualizaciones pueden incluir tablas, gráficos y mapas, entre otras (ej. COVID-19 Map - Johns Hopkins Coronavirus Resource Center).

17.5 El paquete flexdashboard

flexdashboard es un paquete de R orientado a la creación de tableros interactivos mediante R Markdown. Algunas de sus principales características son:

  • Soporta una gran cantidad de componentes tales como tablas, gráficos, mapas, anotaciones de texto, cajas de valores (value boxes) e indicadores (gauges), entre otros. Algunos de estos componentes están disponibles como htmlwidgets (herramientas de JavaScript disponibles en R).
  • Permite configuraciones (layouts) orientados a filas o a columnas. Los componentes que se colocan en estas configuraciones se adaptan a diferentes tamaños de pantalla (ej. dispositivos móviles).
  • Soporta el desarrollo de storyboards, para presentar secuencias de visualizaciones acompañadas de textos explicativos.
  • Opcionalmente, puede utilizarse en combinación con Shiny para añadir interactividad a las visualizaciones.
  • Opcionalmente, puede emplear bslib para personalizar colores, tipos de letra y otros aspectos visuales de los tableros.

17.5.1 Estructura de un documento flexdashboard

Como otros documentos R Markdown, la estructura de un tablero de control flexdashboard se basa en los encabezados Markdown, de la siguente manera:

  • Encabezados de nivel 1: páginas del tablero.
  • Encabezados de nivel 2: filas o columnas.
  • Encabezados de nivel 3: secciones de una fila o columna en las que se ubican los diferentes componentes (tablas, gráficos, mapas, value boxes, anotaciones, etc.) en secciones de código (chunks) de R.

17.5.2 Creación de un documento flexdashboard en RStudio

Puede crearse con la opción de menú: File - New File - R Markdown - From Template - Flex Dashboard. El tablero de control resultante está basado en una plantilla y puede modificarse.

17.6 Documentación

Se recomienda leer:

También es recomendable consultar la guía de referencia de flexdashboard.

17.7 Ejemplos

El sitio web de flexdashboard contiene enlaces a varios ejemplos de tableros de control.

También puede consultar los siguientes ejemplos desarrollados con algunos de los conjuntos de datos utilizados en clase y su código fuente:

17.8 Ejercicios

  1. Desarrolle un tablero de control con datos de cantones de Costa Rica.
    • Cree un repositorio en su cuenta en GitHub, con el nombre tablero-cantones y clónelo a su computadora con RStudio.
    • En el directorio del proyecto que acaba de crear, copie el archivo GeoJSON con los polígonos de los cantones de Costa Rica o su versión con geometrías simplificadas.
    • Cree un documento R Markdown correspondiente a un tablero de control y nómbrelo index.Rmd.
    • En las secciones del tablero coloque:
      • Una tabla creada con el paquete DT que muestre, al menos, las columnas provincia, canton y area.
      • Un mapa creado con el paquete leaflet que despliegue una capa base y los polígonos de los cantones.
      • Un gráfico de barras creado con los paquetes ggplot2 y plotly que muestre el área de cada cantón (o de un subconjunto de cantones que quepa en la pantalla).
    • Debe crear las secciones de código necesarias para cargar los paquetes, leer los datos y realizar cualquier transformación requerida.
    • Publique el proyecto como un sitio en GitHub Pages.
    • Ensaye diferentes configuraciones del tablero de control (si es conveniente, agregue más tablas, gráficos y mapas de ejemplo):
      • Cambie la configuración de columnas a filas o viceversa.
      • Use varias páginas para distribuir los componentes.
      • Coloque varios componentes en la misma fila o columna.
      • Utilice tabsets en filas y columnas.
      • Pruebe otras opciones usadas en los ejemplos o explicadas en las páginas de documentación mencionadas arriba.
  2. Desarrolle un tablero de control con datos de distritos de Costa Rica (geometrías de distritos simplificadas), siguiendo los pasos del ejercicio con datos de cantones.