R est un super outil pour les analyses statistiques, qui permet notamment de réaliser tout un tas de graphiques hautement personnalisables afin de rendre la présentation de résultats attrayante et parlante.
Un package indispensable pour venir compléter la puissance de R est, selon moi, le package « shiny » qui permet d’aller encore plus loin en publiant vos résultats d’analyses sur le web ! Si vous ne le connaissez pas déjà, je vous conseille d’y jeter un oeil, ça va changer votre vie ;-)
- Shiny : qu’est-ce que c’est ? -
Shiny est un package R, développé par RStudio, qui permet la création de pages web interactives sur lesquelles il est possible de réaliser toutes les analyses / actions disponibles sous R.
Sa grande force est le fait qu’il n’y a absolument pas besoin de connaître ni HTML, ni CSS, ni Javascript : tout se fait directement en R ! Cela fait de ce package un outil très puissant et très prisé des fans de R ^^
- Shiny : à quoi ça ressemble ? -
Pour voir quelques exemples d’applications shiny, voici plusieurs liens :
- Galerie Shiny (avec des exemples de bases) : http://shiny.rstudio.com/gallery/
- « Shiny user showcase » (avec des exemples un peu plus complexes et sophistiqués) : https://www.rstudio.com/products/shiny/shiny-user-showcase/
- « Show me Shiny » (pas mal d’autres exemples intéressants) : http://www.showmeshiny.com/
- Shiny : comment ça marche ? -
Après avoir installé et chargé le package « shiny » dans R (pour l’installation de package R, voir par exemple ici), il faut créer son application shiny qui sera composée de deux fichiers : un fichier « ui.R » et un fichier « server.R » .
La partie « ui » : User Interface script, contrôle la mise en page et l’apparence de l’application.
La partie « server » : Server script, contient les instructions dont l’ordinateur a besoin pour construire l’application.
Exemple basique (issu du tutoriel officiel) :
> « ui.R » :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
library(shiny) # Define UI for application that draws a histogram shinyUI(fluidPage( # Application title titlePanel("Hello World!"), # Sidebar with a slider input for the number of bins sidebarLayout( sidebarPanel( sliderInput("bins", "Number of bins:", min = 5, max = 50, value = 30) ), # Show a plot of the generated distribution mainPanel( plotOutput("distPlot") ) ) )) |
> « server.R » :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
library(shiny) # Define server logic required to draw a histogram shinyServer(function(input, output) { # Expression that generates a histogram. The expression is # wrapped in a call to renderPlot to indicate that: # # 1) It is "reactive" and therefore should # re-execute automatically when inputs change # 2) Its output type is a plot output$distPlot <- renderPlot({ x <- faithful[, 2] # Old Faithful Geyser data bins <- seq(min(x), max(x), length.out = input$bins + 1) # draw the histogram with the specified number of bins hist(x, breaks = bins, col = 'skyblue', border = 'white') }) }) |
Puis pour lancer l’application et la tester :
1 |
shinyApp(“C:/monchemin/mondossiercontenantlesfichiersR/”) |
- Shiny : et ensuite ? -
Une fois qu’on est satisfait de son appli « shiny », il va falloir procéder à son déploiement, c’est-à-dire la mettre sur le net (pour l’instant tout avait été fait en local).
Pour cela plusieurs options : soit passer par la plateforme « shinyapps.io » mise à disposition par RStudio (très pratique si on veut faire des tests ou partager rapidement son appli), soit passer par l’installation d’un serveur shiny (tout à fait faisable sur une instance AWS par exemple).
Pour plus de détails sur ces étapes, voir les liens suivants : http://www.shinyapps.io/ et https://www.rstudio.com/products/shiny/shiny-server/.
> Exemple avec le lien vers l’appli de démo présentée plus haut, hébergée sur « shinyapps.io » : https://superstatisticienne.shinyapps.io/demo1/
- Shiny : pour aller plus loin -
Il existe également un autre package plus ou moins « dérivé » de celui-ci : le package « shinydashboard ». Il présente des fonctionnalités similaires mais un « design de base » de l’appli un peu différent, plus proche des « tableaux de bords » (d’où son nom ^^) très à la mode en ce moment.
Et pour les graphiques, de nombreux packages permettent la mise en place de graphiques dynamiques basés sur du Javascript, tels que par exemple : « ggvis » , « rCharts » , …
A la recherche d’aide pour la création de votre appli « shiny » avec R ?
Il y a plusieurs possibilités telles que par exemple :
- Pour commencer, le tutoriel « shiny » : http://shiny.rstudio.com/tutorial/
- Le support technique de RStudio (si besoin) : https://support.rstudio.com/hc/en-us
- Le Google Group « shiny-discuss » (pour des questions générales sur la création d’appli shiny) : https://groups.google.com/forum/#!forum/shiny-discuss
- Le Google Group « shinyapps-users » (pour des questions techniques plutôt liées au déploiement) : https://groups.google.com/forum/#!forum/shinyapps-users
- Et toujours, le forum « Développez.com » dédié à R : http://www.developpez.net/forums/f1179/autres-langages/autres-langages/r/
[NEWS du 12/01/2016] De nouvelles fonctionnalités très intéressantes ajoutées dans la dernière version de « shiny » (version 0.13.0), telles que par exemple des templates HTML, la possibilité de créer des événements Javascript et aussi des « gadgets shiny » (voir ici) ^^
Sinon, de mon côté, j’ai déjà réalisé quelques applis shiny de tests et je travaille encore sur d’autres actuellement, je vous en reparle un de ces jours ;-)
–> Et vous, avez-vous déjà testé le package R « shiny » ? Avez-vous des exemples d’appli à nous faire partager ?
[…] – Le site web de superA.D.: https://superstatisticienne.fr/r-sur-le-web-le-package-shiny/ […]
Merci pour ce billet bien documenté
je commence tout juste sur shiny et je suis assez impressioné parce que ça peut faire. Votre guide, m’a permis de rapidement identifier une façon de partager mes applications. Au plaisir de vous lire à nouveau !
Merci pour le compliment et ravie d’avoir pu vous faire découvrir quelque chose :)
N’hésitez pas à revenir ici partager vos créations R-Shiny !
A très bientôt.
Merci pour ce grand boulot. Je peux avoir votre Email pour une discussion sur cette application. Je suis sur un projet un peu confidentiel et je veux utiliser shiny. ALors j’ai besoin de votre aide
Bonjour et merci ;) Mes coordonnées sont disponibles dans la partie : http://superstatisticienne.fr/a-propos/ , n’hésitez pas à m’écrire !
Merci pour ce travail accompli.
Je suis étudiant en statistique et informatique décisionnelle en cote d’Ivoire.Nous avons organisé un forum sur les sciences de données le 31 mai 2017,sur la thématique du big data.
Je voudrais collaborer avec vous,pour l »organisation de webinar,meet-up …dans laquelle vous pourrez faire une presentation de vous travaux sous Rshiny.
Dans l’attente d’une réponse favorable,recevez mes salutations distinguées.
Bonjour et tout d’abord merci pour votre commentaire :)
Vous pouvez retrouver mon email ici : http://superstatisticienne.fr/a-propos/ , n’hésitez pas à m’envoyer plus d’infos à propos de comment nous pourrions collaborer ensemble, ce qui serait avec plaisir. Bien cordialement.