-
Notifications
You must be signed in to change notification settings - Fork 1
/
manipulateWidget.Rmd
167 lines (118 loc) · 4.33 KB
/
manipulateWidget.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
---
title: "Rajouter encore plus d'interactivité à un graphique interactif avec `manipulateWidget`"
author: "François Guillem"
date: "16/01/2017"
output:
ioslides_presentation:
css: styles.css
runtime: shiny
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
library(project)
prStart()
```
## Qui suis-je ?
<div class="columns-2">
![](img/moi.png)
- François Guillem
- fguillem@ludostat.fr
- Data scientist freelance
- Fan de jeux vidéo
- Fan de R !
- Co-créateur de ce meetup
- Actuellement en mission à ![](img/logo-rte.jpg)
</div>
## Pourquoi `manipulateWidget` ?
> - Il est devenu facile de créer des graphiques interactifs dans R avec [htmlwidgets](http://www.htmlwidgets.org/showcase_leaflet.html)
> - Mais interactivité limitée
> - On ne peut pas modifier *facilement* les données ou les paramètres d'un graphique de façon interactive
## Qu'est-ce que `manipulateWidget` ?
> - Un package pour créer facilement et rapidement une interface graphique
> - Avec seulement quelques lignes de code R
> - Sans avoir besoin de connaitre autre chose que R
> - Sans créer d'autres fichiers
## Qu'est-ce que `manipulateWidget` ?
- Le plus dur est d'écrire le code qui génère un graphique interactif
- Une fois fait, on utilise la fonction `manipulateWidget` en indiquant quel paramètre du code doit être modifié par quel type de controle (liste déroulante, champ texte, case à cocher, etc.)
## Exemple
Voici un exemple de code qui génère un histogramme interactif
```{r eval=FALSE, echo=TRUE}
library(plotly)
mtcarsHist <- function(variable, nbins = 5) {
plot_ly() %>%
add_histogram(x = mtcars[, variable], alpha = 0.7, nbinsx = nbins) %>%
layout(
title = variable,
xaxis = list(title = variable),
yaxis = list(title = "Fréquence")
)
}
mtcarsHist("mpg")
```
## Exemple {.flexbox .vcenter}
```{r}
library(plotly)
mtcarsHist <- function(variable, nbins = 5) {
plot_ly() %>%
add_histogram(x = mtcars[, variable], alpha = 0.7, nbinsx = nbins) %>%
layout(
title = variable,
xaxis = list(title = variable),
yaxis = list(title = "Fréquence")
)
}
mtcarsHist("mpg")
```
## Exemple
On veut choisir de manière interactive la variable à représenter et le nombre de barres.
```{r echo=TRUE, eval=FALSE}
manipulateWidget(
mtcarsHist(variable, nbins),
variable = mwSelect(names(mtcars)),
nbins = mwSlider(1, 30, value = 5)
)
```
## Exemple
```{r}
manipulateWidget(
mtcarsHist(variable, nbins),
variable = mwSelect(names(mtcars)),
nbins = mwSlider(1, 30, value = 5)
)
```
## Principaux types de controles
Fonction | Type de controle | exemple
----------|------------------|-----------------------------
mwText | champs texte |`r textInput("a", "","text")`
mwNumeric | champs numerique | `r numericInput("a", "", 10.5)`
mwSlider | curseur simple ou double | `r sliderInput("a", "", 0, 10, 5)`
mwSelect | liste déroulante | `r selectInput("a", "", c("a", "b", "c"))`
mwCheckbox | case à cocher | `r checkboxInput("a", "Show legend", TRUE)`
mwDate | calendrier | `r dateInput("a", "", Sys.Date())`
## D'autres fonctionalités bien sympathiques
Avec quelques lignes de code R en plus on peut :
- **Grouper des controles**
- **Afficher/masquer un controle** en fonction de la valeur des autres controles
- **Modifier un controle** en fonction de la valeur des autres controles
- **Comparer** le même graphique avec différentes valeurs de paramètres
La fonction `combineWidgets` permet de combiner plusieurs graphiques interactifs
# Démonstration
## Exemple d'utilisation à RTE
![](img/rte_map.png)
## Conclusion
### Avantages
- Simplicité
- Rapidité
- Accès à des fonctionalités avancées avec très peu de code
### Pour qui ?
- **Utilisateurs finaux :** créer en quelques lignes des outils facilitant l'exploration de données et l'analyse de résultats.
- **Développeurs :** création d'interfaces graphiques faciles à maintenir et à faire évoluer.
##
### Package disponible sur le CRAN
### Code source disponible sur Github :
https://github.com/rte-antares-rpackage/manipulateWidget
### Bugs, requêtes et suggestions :
https://github.com/rte-antares-rpackage/manipulateWidget/issues
## Vous aimez la bière ?{#mcb}
Venez au [meetup My Community Beer](https://www.meetup.com/fr-FR/My-Community-Beer/events/236708852/) le 6 Février