Introducción
Shiny es un potente paquete de R que permite crear aplicaciones web interactivas directamente desde R. Con Shiny, puede convertir sus análisis en cuadros de mando dinámicos que permitan a los usuarios explorar los datos en tiempo real. Este tutorial le guiará a través de los conceptos básicos de Shiny, desde la configuración de la interfaz de usuario hasta la gestión de la reactividad y el despliegue de su aplicación. Tanto si eres nuevo en Shiny como si quieres ampliar tus conocimientos, esta guía te ayudará a crear cuadros de mando interactivos y atractivos para tus proyectos de datos.
Primeros pasos con Shiny
Antes de empezar, asegúrese de que Shiny está instalado. Puede instalarlo desde CRAN si es necesario:
#| label: install-shiny
install.packages("shiny")
library(shiny)
Estructura básica de una aplicación Shiny
Una aplicación Shiny suele constar de dos componentes principales: - UI (Interfaz de usuario):Define el diseño y la apariencia de tu aplicación. - Servidor:Contiene la lógica que controla el comportamiento de la app y responde a las entradas del usuario.
Esta es la estructura mínima de una aplicación Shiny:
#| label: minimal-shiny-app
library(shiny)
# Definir UI para la aplicación
<- fluidPage(
ui titlePanel("My First Shiny App"),
sidebarLayout(
sidebarPanel(
sliderInput("obs", "Number of observations:",
min = 10, max = 100, value = 50)
),mainPanel(
plotOutput("distPlot")
)
)
)
# Definir la lógica de servidor necesaria para dibujar un histograma
<- function(input, output) {
server $distPlot <- renderPlot({
outputhist(rnorm(input$obs))
})
}
# Ejecutar la aplicación
shinyApp(ui = ui, server = server)
En este ejemplo, la app genera un histograma basado en una distribución normal aleatoria, con el número de observaciones controlado por una entrada deslizante.
Construir un Cuadro de Mando más Interactivo
Construyamos un ejemplo ligeramente más complejo que incluya múltiples entradas y salidas, demostrando la reactividad y el contenido dinámico. En este ejemplo, crearemos un panel de control que permitirá a los usuarios filtrar y visualizar datos del conjunto de datos incorporado mtcars
.
#| label: interactive-dashboard
library(shiny)
library(ggplot2)
library(dplyr)
# Definir la interfaz de usuario del cuadro de mando
<- fluidPage(
ui titlePanel("Mtcars Data Dashboard"),
sidebarLayout(
sidebarPanel(
sliderInput("cyl", "Select number of cylinders:",
min = min(mtcars$cyl), max = max(mtcars$cyl),
value = c(min(mtcars$cyl), max(mtcars$cyl))),
selectInput("var", "Select variable to plot:",
choices = c("mpg", "hp", "wt"), selected = "mpg")
),mainPanel(
plotOutput("dataPlot"),
tableOutput("dataTable")
)
)
)
# Definir la lógica del servidor para el cuadro de mando
<- function(input, output) {
server # Expresión reactiva para filtrar datos basados en la entrada del deslizador
<- reactive({
filteredData %>%
mtcars filter(cyl >= input$cyl[1], cyl <= input$cyl[2])
})
# Renderizar un gráfico basado en los datos filtrados y la variable seleccionada
$dataPlot <- renderPlot({
outputggplot(filteredData(), aes_string(x = input$var)) +
geom_histogram(binwidth = 5, fill = "steelblue", color = "white") +
labs(title = paste("Distribution of", input$var),
x = input$var, y = "Frequency") +
theme_minimal()
})
# Renderizar los datos filtrados como una tabla
$dataTable <- renderTable({
outputfilteredData()
})
}
# Ejecutar la aplicación Shiny
shinyApp(ui = ui, server = server)
En este ejemplo, los usuarios pueden seleccionar el número de cilindros y la variable que desean representar, y el cuadro de mandos se actualiza dinámicamente en función de los datos introducidos.
Buenas prácticas y consejos
Modularizar el código:
Para aplicaciones más grandes, considere modularizar sus componentes de interfaz de usuario y servidor en archivos separados.Utilizar temas Shiny:
Personalice el aspecto de su aplicación mediante temas Shiny (por ejemplo, a través del paqueteshinythemes
).Optimización del rendimiento:
Utilizar expresiones reactivas de forma eficiente para minimizar los cálculos redundantes y mejorar el rendimiento de la app.Pruebas y depuración:
Prueba regularmente tu aplicación para asegurarte de que todos los componentes reactivos se actualizan como se espera, y utiliza las herramientas de depuración integradas en Shiny cuando surjan problemas.
Opciones de despliegue
Una vez que tu dashboard esté completo, puedes desplegarlo utilizando varias plataformas:
- ShinyApps.io: Un servicio en la nube para alojar aplicaciones Shiny.
- RStudio Connect: Para el despliegue y la colaboración a nivel empresarial.
- Docker: Containeriza tu app Shiny para despliegues reproducibles y escalables.
Conclusión
Shiny le permite convertir sus análisis R en cuadros de mando interactivos que son a la vez atractivo y funcional. Este tutorial proporciona una guía paso a paso para crear una aplicación Shiny, desde la estructura básica de la aplicación hasta un ejemplo de panel de control más interactivo utilizando el conjunto de datos mtcars
. Experimente con estos ejemplos, personalice los diseños y explore las funciones avanzadas para crear aplicaciones dinámicas basadas en datos.
Lecturas adicionales
- Automatización de informes con RMarkdown
- Web Scraping con rvest
- R Markdown para investigación reproducible (Marcador de posición para contenido relacionado)
Feliz codificación, y disfrutar de la construcción de cuadros de mando interactivos con Shiny!
Explorar más artículos
Aquí hay más artículos de la misma categoría para ayudarte a profundizar en el tema.
Reutilización
Cómo citar
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Cuadros de mando interactivos con Shiny},
date = {2024-02-10},
url = {https://www.datanovia.com/es/learn/programming/r/tools/interactive-dashboards-with-shiny.html},
langid = {es}
}