18 Desarrollo de aplicaciones web interactivas
18.1 Resumen
En una aplicación web interactiva, el usuario puede modificar el comportamiento de la aplicación, usualmente mediante una interfaz que le permite realizar operaciones como filtros, búsquedas y ordenamientos, entre otros. Shiny
es un paquete de R que facilita el desarrollo de este tipo de aplicaciones. Un tablero de control desarrollado en flexdashboard
puede ser adaptado para que funcione como una aplicación Shiny
.
18.2 Trabajo previo
18.2.1 Lecturas
Moraga, P. (2019). Geospatial Health Data: Modeling and Visualization with R-INLA and Shiny (capítulos 13 y 14). Chapman & Hall/CRC. https://www.paulamoraga.com/book-geospatial/
Berishvili, N. (2020). Create an Interactive Dashboard with Shiny, Flexdashboard, and Plotly. Medium. https://towardsdatascience.com/create-an-interactive-dashboard-with-shiny-flexdashboard-and-plotly-b1f025aebc9c
1littlecoder. (2020). How to Deploy R Shiny App for Free on Shinyapps.io. https://www.youtube.com/watch?v=2QstfyGX4ZU
18.3 Preparativos
18.3.1 Instalación y carga de paquetes
# Instalación de Shiny
install.packages("shiny")
18.4 Desarrollo de aplicaciones web interactivas mediante Shiny
En una aplicación web interactiva, el usuario puede modificar el comportamiento de la aplicación, usualmente mediante una interfaz que le permite realizar operaciones como filtros, búsquedas y ordenamientos, entre otros, para el caso de una aplicación orientada a la visualización de datos. Shiny es un paquete de R que facilita el desarrollo de este tipo de aplicaciones.
Las aplicaciones Shiny deben ejecutarse en un servidor, el cual puede estar ubicado en cualquier computador habilitado para ejecutar código en R como, por ejemplo, la estación de trabajo del programador (esta opción se usa principalmente para efectos de desarrollo y pruebas), un servidor ubicado en la red de una organización o un servidor en la nube (ej. shinyapps.io, RStudio Connect).
Hay varias formas de desarrollar aplicaciones con Shiny
. En este capítulo se estudiará como hacerlo en un tablero de control desarrollado con flexdashboard
.
18.5 Shiny y flexdashboard
La adición de componentes de Shiny
a un tablero de control desarrollado con flexdashboard
, permite convertir un tablero de control “estático” en un documento interactivo. Para esto, deben ejecutarse los siguientes pasos en el documento R Markdown con el tablero flexdashboard
:
- Añadir
runtime: shiny
a la sección de front matter del documento (la que está al inicio, con sintaxis YAML). - Agregar el atributo
{.sidebar}
a la primera columna del tablero, para que funcione como un contenedor de los controles de entrada. - Agregar controles de entrada (widgets) de
Shiny
. - Colocar las salidas en funciones tipo
render
(ej.renderDT()
,renderPlotly()
,renderLeaflet()
), para que así respondan dinámicamente a los cambios en las entradas del usuario y que se redimensionen cuando cambia el tamaño de su contenedor. - Definir expresiones reactivas para detectar las acciones del usuario final y reflejarlas en las salidas del tablero.
18.6 Documentación
Se recomienda leer:
También es recomendable consultar la guía de referencia de Shiny.
18.7 Ejemplos
El sitio web de Shiny
contiene enlaces a varios ejemplos de aplicaciones interactivas.
También puede consultar los siguientes ejemplos desarrollados con algunos de los conjuntos de datos utilizados en clase y su código fuente:
18.8 Ejercicios
- En el tablero de datos de distritos que desarrolló en el capítulo anterior:
- Agregue los siguientes widgets de
Shiny
:- Una lista de selección de provincia.
- Una lista de selección de cantón.
- Publíquelo en shinyapps.io. Puede consultar el video How to Deploy R Shiny App for Free on Shinyapps.io.
- Agregue los siguientes widgets de