Introduction
Shiny est un package R puissant qui vous permet de créer des applications web interactives directement à partir de R. Avec Shiny, vous pouvez transformer vos analyses en tableaux de bord dynamiques qui permettent aux utilisateurs d’explorer les données en temps réel. Ce tutoriel vous guidera à travers les bases de Shiny - de la configuration de l’interface utilisateur à la gestion de la réactivité et au déploiement de votre application. Que vous soyez novice en Shiny ou que vous cherchiez à développer vos compétences, ce guide vous aidera à créer des tableaux de bord interactifs et attrayants pour vos projets de données.
Premiers pas avec Shiny
Avant de commencer, assurez-vous que Shiny est installé. Vous pouvez l’installer depuis le CRAN si nécessaire:
#| label: install-shiny
install.packages("shiny")
library(shiny)
Structure de base d’une application Shiny
Une application Shiny se compose généralement de deux éléments principaux: - UI (User Interface) : Définit la présentation et l’apparence de votre application. - Server: Contient la logique qui contrôle le comportement de l’application et répond aux entrées de l’utilisateur.
Voici une structure d’application Shiny minimale:
#| label: minimal-shiny-app
library(shiny)
# Définir l'interface utilisateur de l'application
<- fluidPage(
ui titlePanel("My First Shiny App"),
sidebarLayout(
sidebarPanel(
sliderInput("obs", "Number of observations:",
min = 10, max = 100, value = 50)
),mainPanel(
plotOutput("distPlot")
)
)
)
# Définir la logique serveur nécessaire pour dessiner un histogramme
<- function(input, output) {
server $distPlot <- renderPlot({
outputhist(rnorm(input$obs))
})
}
# Exécuter l'application
shinyApp(ui = ui, server = server)
Dans cet exemple, l’application génère un histogramme basé sur une distribution normale aléatoire, le nombre d’observations étant contrôlé par un curseur.
Construire un tableau de bord plus interactif
Construisons un exemple légèrement plus complexe qui inclut de multiples entrées et sorties, démontrant la réactivité et le contenu dynamique. Dans cet exemple, nous allons créer un tableau de bord qui permet aux utilisateurs de filtrer et de visualiser les données de l’ensemble de données intégré mtcars
.
#| label: interactive-dashboard
library(shiny)
library(ggplot2)
library(dplyr)
# Définir l'interface utilisateur du tableau de bord
<- 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")
)
)
)
# Définir la logique du serveur pour le tableau de bord
<- function(input, output) {
server # Expression réactive pour filtrer les données en fonction de l'entrée du curseur
<- reactive({
filteredData %>%
mtcars filter(cyl >= input$cyl[1], cyl <= input$cyl[2])
})
# Rendre un graphique basé sur les données filtrées et la variable sélectionnée
$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()
})
# Rendre les données filtrées sous forme de tableau
$dataTable <- renderTable({
outputfilteredData()
})
}
# Exécuter l'application Shiny
shinyApp(ui = ui, server = server)
Dans cet exemple, les utilisateurs peuvent sélectionner le nombre de cylindres et une variable à tracer, le tableau de bord se mettant à jour dynamiquement en fonction de leurs entrées.
Meilleures pratiques et conseils
Modulariser votre code:
Pour les applications plus importantes, envisagez de modulariser les composants de l’interface utilisateur et du serveur dans des fichiers distincts.Utiliser les thèmes Shiny:
Personnalisez l’aspect et la convivialité de votre application en utilisant des thèmes Shiny (par exemple, via le paquetageshinythemes
).Optimisation des performances:
Utiliser efficacement les expressions réactives pour minimiser les calculs redondants et améliorer les performances de l’application.Test et débogage:
Testez régulièrement votre application pour vous assurer que tous les composants réactifs se mettent à jour comme prévu, et utilisez les outils de débogage intégrés de Shiny en cas de problème.
Options de déploiement
Une fois votre tableau de bord terminé, vous pouvez le déployer à l’aide de différentes plateformes:
- ShinyApps.io: Un service en nuage pour l’hébergement d’applications Shiny.
- RStudio Connect: Pour un déploiement et une collaboration au niveau de l’entreprise.
- Docker: Conteneurise votre application Shiny pour des déploiements reproductibles et évolutifs.
Conclusion
Shiny vous permet de transformer vos analyses R en tableaux de bord interactifs à la fois attrayants et fonctionnels. Ce tutoriel fournit un guide étape par étape pour construire une application Shiny, de la structure de base de l’application à un exemple de tableau de bord plus interactif utilisant le jeu de données mtcars
. Expérimentez ces exemples, personnalisez les mises en page et explorez les fonctionnalités avancées pour créer des applications dynamiques basées sur des données.
Plus d’informations
- Automatiser les rapports avec RMarkdown
- Web Scraping with rvest
- R Markdown for Reproducible Research (Placeholder for related content)(Placeholder for related content)(Placeholder for related content)(Placeholder for related content)(Placeholder for related content)(Placeholder for related content)
Bon codage et bonne construction de tableaux de bord interactifs avec Shiny!
Explorer d’autres articles
Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.
Réutilisation
Citation
@online{kassambara2024,
author = {Kassambara, Alboukadel},
title = {Tableaux de bord interactifs avec Shiny},
date = {2024-02-10},
url = {https://www.datanovia.com/fr/learn/programming/r/tools/interactive-dashboards-with-shiny.html},
langid = {fr}
}