Recherche…


Créer une application

Shiny est un package R développé par RStudio qui permet la création de pages Web pour afficher de manière interactive les résultats d'une analyse dans R.

Il existe deux méthodes simples pour créer une application Shiny:

  • dans un fichier .R ou
  • en deux fichiers: ui.R et server.R .

Une application Shiny est divisée en deux parties:

  • ui : Un script d'interface utilisateur contrôlant la mise en page et l'apparence de l'application.
  • serveur : script de serveur contenant du code pour permettre à l'application de réagir.

Un fichier

library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
    # Application title
    titlePanel("Hello World!")
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Deux fichiers

Créer ui.R fichier ui.R

library(shiny)

# Define UI for application
shinyUI(fluidPage(  
  # Application title
  titlePanel("Hello World!")
))

Créer server.R fichier server.R

library(shiny)

# Define server logic
shinyServer(function(input, output){})

Bouton radio

Vous pouvez créer un ensemble de boutons radio utilisés pour sélectionner un élément dans une liste.

Il est possible de modifier les paramètres:

  • selected: La valeur initialement sélectionnée (caractère (0) pour aucune sélection)
  • en ligne: horizontale ou verticale
  • largeur

Il est également possible d'ajouter du HTML.

library(shiny)

ui <- fluidPage(    
  radioButtons("radio", 
               label = HTML('<FONT color="red"><FONT size="5pt">Welcome</FONT></FONT><br> <b>Your favorite color is red ?</b>'),
               choices = list("TRUE" = 1, "FALSE" = 2),
               selected = 1,
               inline = T,
               width = "100%"),      
  fluidRow(column(3, textOutput("value")))) 


server <- function(input, output){
  output$value <- renderPrint({
    if(input$radio == 1){return('Great !')}
     else{return("Sorry !")}})}

shinyApp(ui = ui, server = server)

entrer la description de l'image ici

Groupe de cases à cocher

Créez un groupe de cases à cocher pouvant être utilisé pour basculer plusieurs choix indépendamment. Le serveur recevra l'entrée en tant que vecteur de caractère des valeurs sélectionnées.

library(shiny)

ui <- fluidPage(    
  checkboxGroupInput("checkGroup1", label = h3("This is a Checkbox group"), 
                 choices = list("1" = 1, "2" = 2, "3" = 3),
                 selected = 1),
  fluidRow(column(3, verbatimTextOutput("text_choice")))
  ) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(paste0("You have chosen the choice ",input$checkGroup1))})
} 

shinyApp(ui = ui, server = server)

entrer la description de l'image ici

Il est possible de modifier les paramètres:

  • label: titre
  • choix: valeurs sélectionnées
  • selected: La valeur initialement sélectionnée (NULL pour aucune sélection)
  • en ligne: horizontale ou verticale
  • largeur

Il est également possible d'ajouter du HTML.

Sélectionnez la case

Créez une liste de sélection qui peut être utilisée pour choisir un ou plusieurs éléments dans une liste de valeurs.

library(shiny)

ui <- fluidPage(    
  selectInput("id_selectInput", 
          label = HTML('<B><FONT size="3">What is your favorite color ?</FONT></B>'), 
          multiple = TRUE,
          choices = list("red" = "red", "green" = "green", "blue" = "blue", "yellow" = "yellow"), 
          selected = NULL),
  br(), br(),
  fluidRow(column(3, textOutput("text_choice")))) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(input$id_selectInput)})
}

shinyApp(ui = ui, server = server)

entrer la description de l'image ici

Il est possible de modifier les paramètres:

  • label: titre
  • choix: valeurs sélectionnées
  • selected: La valeur initialement sélectionnée (NULL pour aucune sélection)
  • multiple: VRAI ou FAUX
  • largeur
  • Taille
  • selectize: TRUE ou FALSE (pour utiliser ou non selectize.js, changer l'affichage)

Il est également possible d'ajouter du HTML.

Lancer une application Shiny

Vous pouvez lancer une application de plusieurs manières, en fonction de la manière dont vous créez votre application. Si votre application est divisée en deux fichiers ui.R et server.R ou si toute votre application est dans un seul fichier.

1. Deux fichiers app

Vos deux fichiers ui.R et server.R doivent être dans le même dossier. Vous pouvez ensuite lancer votre application en exécutant dans la console la fonction shinyApp() et en passant le chemin du répertoire contenant l'application Shiny.

shinyApp("path_to_the_folder_containing_the_files")  

Vous pouvez également lancer l'application directement depuis Rstudio en appuyant sur le bouton Exécuter l'application qui apparaît sur Rstudio lorsque vous ui.R un fichier ui.R ou server.R .
ClicktoRun

Ou vous pouvez simplement écrire runApp() sur la console si votre répertoire de travail est le répertoire Shiny App.

2. Une application de fichier

Si vous créez votre fichier R dans un fichier, vous pouvez également le lancer avec la fonction shinyApp() .

  • à l'intérieur de votre code:
library(shiny)

ui <- fluidPage() #Create the ui
server <- function(input, output){} #create the server

shinyApp(ui = ui, server = server) #run the App
  • dans la console en ajoutant le chemin d'accès à un fichier .R contenant l'application Shiny avec le paramètre appFile :
shinyApp(appFile="path_to_my_R_file_containig_the_app")

Contrôle des widgets

Fonction Widget
actionButton Bouton d'action
checkboxGroupInput Un groupe de cases à cocher
checkboxInput Une seule case à cocher
dateInput Un calendrier pour faciliter la sélection des dates
dateRangeInput Une paire de calendriers pour sélectionner une plage de dates
fichierInput Un assistant de contrôle de téléchargement de fichier
Texte d'aide Texte d'aide pouvant être ajouté à un formulaire de saisie
numericInput Un champ pour entrer des nombres
radioBoutons Un ensemble de boutons radio
selectInput Une boîte avec des choix à sélectionner
sliderInput Un curseur
bouton de soumission Un bouton de soumission
saisie de texte Un champ pour saisir du texte
library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
  titlePanel("Basic widgets"),
  
  fluidRow(
    
    column(3,
           h3("Buttons"),
           actionButton("action", label = "Action"),
           br(),
           br(), 
           submitButton("Submit")),
    
    column(3,
           h3("Single checkbox"),
           checkboxInput("checkbox", label = "Choice A", value = TRUE)),
    
    column(3, 
           checkboxGroupInput("checkGroup", 
                              label = h3("Checkbox group"), 
                              choices = list("Choice 1" = 1, 
                                             "Choice 2" = 2, "Choice 3" = 3),
                              selected = 1)),
    
    column(3, 
           dateInput("date", 
                     label = h3("Date input"), 
                     value = "2014-01-01"))   
  ),
  
  fluidRow(
    
    column(3,
           dateRangeInput("dates", label = h3("Date range"))),
    
    column(3,
           fileInput("file", label = h3("File input"))),
    
    column(3, 
           h3("Help text"),
           helpText("Note: help text isn't a true widget,", 
                    "but it provides an easy way to add text to",
                    "accompany other widgets.")),
    
    column(3, 
           numericInput("num", 
                        label = h3("Numeric input"), 
                        value = 1))   
  ),
  
  fluidRow(
    
    column(3,
           radioButtons("radio", label = h3("Radio buttons"),
                        choices = list("Choice 1" = 1, "Choice 2" = 2,
                                       "Choice 3" = 3),selected = 1)),
    
    column(3,
           selectInput("select", label = h3("Select box"), 
                       choices = list("Choice 1" = 1, "Choice 2" = 2,
                                      "Choice 3" = 3), selected = 1)),
    
    column(3, 
           sliderInput("slider1", label = h3("Sliders"),
                       min = 0, max = 100, value = 50),
           sliderInput("slider2", "",
                       min = 0, max = 100, value = c(25, 75))
    ),
    
    column(3, 
           textInput("text", label = h3("Text input"), 
                     value = "Enter text..."))   
  )
  
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Le débogage

debug() et debugonce() ne fonctionneront pas bien dans le contexte de la plupart des débogages Shiny. Cependant, browser() instructions browser() insérées dans des endroits critiques peuvent vous donner une idée de la manière dont votre code Shiny ne fonctionne pas. Voir aussi: Débogage à l'aide du browser()

Mode vitrine

Le mode Showcase affiche votre application à côté du code qui la génère et met en évidence les lignes de code dans server.R au fur et à mesure de leur exécution.

Il existe deux manières d’activer le mode Showcase:

  • Lancez l'application Shiny avec l'argument display.mode = "showcase", par exemple, runApp("MyApp", display.mode = "showcase") .
  • Créez le fichier nommé DESCRIPTION dans votre dossier d'application Shiny et ajoutez-y cette ligne: DisplayMode: Showcase .

Visualiseur de journal réactif

Reactive Log Visualizer fournit un outil interactif basé sur un navigateur pour visualiser les dépendances réactives et leur exécution dans votre application. Pour activer Reactive Log Visualizer, exécutez les options(shiny.reactlog=TRUE) dans la console R et ajoutez cette ligne de code dans votre fichier server.R. Pour démarrer Reactive Log Visualizer, appuyez sur Ctrl + F3 sous Windows ou sur Commande + F3 sous Mac lorsque votre application est en cours d'exécution. Utilisez les touches fléchées gauche et droite pour naviguer dans le visualiseur de journal réactif.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow