Tableaux de bord interactifs avec Shiny

Créer des applications Web dynamiques en utilisant Shiny en R

Apprenez à créer des tableaux de bord interactifs et des applications web en utilisant Shiny dans R. Ce tutoriel couvre les bases de Shiny, de la conception des interfaces utilisateur à la gestion de la réactivité et au déploiement de votre application.

Programmation
Auteur·rice
Affiliation
Date de publication

10 février 2024

Modifié

9 mai 2025

Mots clés

Tutoriel Shiny, tableaux de bord interactifs en R, construire l’application Shiny, Applications web interactives, Tableau de bord Shiny

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
ui <- fluidPage(
  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
server <- function(input, output) {
  output$distPlot <- renderPlot({
    hist(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.

Exemple d’application Shiny 01

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
ui <- fluidPage(
  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
server <- function(input, output) {
  # Expression réactive pour filtrer les données en fonction de l'entrée du curseur
  filteredData <- reactive({
    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
  output$dataPlot <- renderPlot({
    ggplot(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
  output$dataTable <- renderTable({
    filteredData()
  })
}

# 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.

Exemple d’application Shiny 02

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 paquetage shinythemes).

  • 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

Bon codage et bonne construction de tableaux de bord interactifs avec Shiny!

Explorer d’autres articles

Note

Voici d’autres articles de la même catégorie pour vous aider à approfondir le sujet.

Retour au sommet

Réutilisation

Citation

BibTeX
@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}
}
Veuillez citer ce travail comme suit :
Kassambara, Alboukadel. 2024. “Tableaux de bord interactifs avec Shiny.” February 10, 2024. https://www.datanovia.com/fr/learn/programming/r/tools/interactive-dashboards-with-shiny.html.