À la découverte de Shiny

Let's make your code a little more shiny (mème)
Auteur : Colin Fay
Tags : Actualités, Ressources
Date :

Shiny, shiny, vous avez-dit “Shiny” ? Késako ? Rassurez-vous, vous êtes au bon endroit : même si cela sonne comme le nom d’un shampooing pour cheveux brillants, Shiny est à l’heure actuelle un must-know du “R World”. Focus sur ce package incontournable.

Shiny, qu’est-ce que c’est ?

Envie de partager vos plus beaux projets R ? Ah, ce que l’on vous comprend ! Eh bien, bonne nouvelle : les équipes de RStudio ont développé Shiny, un package qui vous permet de créer des applications dynamiques pour le web… incontournable pour partager avec le monde entier ! Facile d’accès dans sa version “basique” (aka, sans trop mettre la main dans le design), ce package crée des applications web, sans avoir à toucher au HTML, ni au CSS..

Shiny, comment ça marche ?

Bon, c’est bien beau tout ça, mais concrètement, comment ça se passe ? Tout commence par l’installation (à noter que le package est préinstallé dans RStudio) :

 # install.packages("shiny")
library(shiny)

Une fois la librairie chargée, vous découperez votre application Shiny en deux éléments, une partie “ui” (pour User Interface, soit tout ce qui sera affiché à l’utilisateur), et une partie “server” (qui contiendra toutes les commandes qui s’opèreront côté serveur, dans R).

Commençons par la partie “ui”. Il s’agit de la portion de votre code qui contiendra les éléments graphique de l’interface de votre application Shiny : d’abord les éléments de mise en page (titre, nombre et taille des éléments, boutons et sliders, etc.). Mais surtout, cette partie contiendra les composantes de votre application : des objets qui communiqueront avec la partie serveur, pour venir afficher ces éléments (tableaux, dataviz, code…) dans votre interface graphique.

UI

On ne vous le répétera jamais assez : rien de mieux qu’un exemple pour bien comprendre ! Alors, pour découvrir Shiny, nous allons travailler ensemble sur la création d’une application (très simple) qui vous permet de voir les X premières lignes d’un des jeux de données proposés, X étant un chiffre entré par l’utilisateur. Commençons par UI :

 # Définition de l’interface utilisateur de notre application
ui <- shinyUI(fluidPage(
  # Le titre de votre application
  titlePanel("Aperçu d’un dataset"),
  # Indiquer le ’layout’ de votre application : autrement dit le squelette visuel de l’application
  sidebarLayout(
    # Composants de la région gauche de l’application
    sidebarPanel(
      # Ici, nous insérons un champ pour entrer un chiffre, ainsi qu’un menu déroulant
      textInput(
        inputId = "lignes",
        label = "Combien de lignes voulez-vous voir ? ",
        value = 10
      ),
      selectInput(
        inputId = "labs",
        label = "Dataset",
        choice = c("cars", "rock", "beaver1", "sleep")
      )
    ),
    # Ici, nous indiquons l’élément qui sera présent dans la fenêtre principale : l’element "dataset", qui est un graph
    mainPanel(tableOutput("dataset"))
  )
))

Server

Penchons-nous maintenant sur la partie serveur. C’est ici que vous entrerez tout votre code R, qui s’exécutera avant tout affichage de votre application. Autrement dit, c’est lui qui crée les éléments qui seront affichés dans l’interface. C’est dans cette partie que sont appelées les composantes.

 server <- shinyServer(function(input, output) {
  # On retrouve ici l’élément "dataset", qui communique avec ui par ‘output’.
  output$dataset <- renderTable({
    # Nous imprimons les éléments d'après les données en entrée : ces derniers sont appelés avec `input` puis le nom de la composante de ui (ici 'labs' et 'lignes')
    if (input$labs == "cars") {
      print(head(cars, input$lignes))
    } else if (input$labs == "rock") {
      print(head(rock, input$lignes))
    } else if (input$labs == "sleep") {
      print(head(sleep, input$lignes))
    } else {
      print(head(beaver1, input$lignes))
    }
  })
})

Enfin, pour voir votre application en local, c’est très simple.

 shinyApp(ui, server) 

Une fenêtre s’ouvre, et vous pouvez désormais admirer votre application !

Shiny, un peu plus loin

Vous vous en doutez, il est possible d’aller beaucoup plus loin que cette première application, notamment en terme de design (mais pour cela, il faudra peut-être mettre un peu les mains dans le HTML et/ou dans le CSS). Vous pouvez également charger des thèmes préfaits, par exemple pour réaliser des tableaux de bords. Et bien sûr, au delà du visionnage en local, il est possible de déployer votre application sur le web : soit en passant par https://www.shinyapps.io/, soit en installant votre propre serveur — une solution de choix en contexte pro. Mais tout ça c'est une autre histoire, peuplée de Shiny Server et de Shiny Proxy... et nous en reparlerons plus tard !

Vous avez envie de créer vos apps, mais vous êtes un peu perdu ? La solution : appelez-nous, nous vous proposerons une solution de développement Shiny sur-mesure. Et, si vous tenez à le faire par vous même, nous avons la formation qui vous convient ! Et surtout, n'oubliez pas d'imprimer, de plastifier et de garder toujours sous le coude notre Cheatsheet en français 😉 !


Commentaires

2 réponses à “À la découverte de Shiny”

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


À lire également

Nos formations Certifiantes à R sont finançables à 100% via le CPF

Nos formations disponibles via moncompteformation.gouv.fr permettent de délivrer des Certificats reconnues par l’état, enregistrées au répertoire spécifique de France Compétences. 3 niveaux de certifications existent :

Contactez-nous pour en savoir plus.

Calendrier

07/01/2025

07/01/2025

10/12/2024