Créer une application présentant l’évolution du
co2
et permettant les différents choix indiqués ci-dessous. Celle-ci doit avoir une zone à droite permettant la saisie par l’utilisateur des options possibles. Le graphique et la table résumée doit ainsi être dans une zone à gauche.
Nous commençons par créer la structure de l’application avec un sidebarLayout()
, dans lequel la partie de contrôle (sidebarPanel()
) est à droite et vide pour le moment. Et la partie pinricpale (mainPanel()
) contient uniquement un plotOutput()
(nommé graphique
).
le contenu des fichiers indiqués ci-dessous :
library(shiny)
shinyUI(fluidPage(
title = "TP5",
titlePanel("Evolution du CO2"),
sidebarLayout(
position = "right",
sidebarPanel(
),
mainPanel(
plotOutput("graphique")
)
)
))
library(shiny)
library(ggplot2)
co2_df = data.frame(
date = unclass(time(co2)),
mesure = unclass(co2)
)
shinyServer(function(input, output) {
output$graphique = renderPlot({
graphique = ggplot(co2_df, aes(date, mesure)) + geom_line()
graphique
})
})
L’utilisateur doit saisir une valeur entre 2 et 10 (5 par défaut). Celle-ci représente le nombre d’intervalles à utiliser pour transformer la variable
co2
en variable qualitative (à l’aide la fonctioncut()
). L’application affichera un tableau avec les intervalles ainsi créés et le nombre de valeurs correspondant à chacune.
On doit donc ajouter les éléments suivants :
data.frame
, dans le mainPanel()
en dessous du plotOutput()
, nommé tableau
tableOutput("tableau")
sidebarPanel()
, nommé nbIntervalles
, avec des valeurs possibles de 2 à 10, et 5 par défautnumericInput("nbIntervalles", "Nombre d'intervalles", min = 2, max = 10, value = 5)
renderTable()
à la variable tableau
de l’output
output$tableau <- renderTable({
#cf code ci-dessous
}, rownames = TRUE)
5
par l’input
nommé nbIntervalles
co2_ordinale <- cut(co2_df$mesure, input$nbIntervalles)
summary(co2_ordinale)
L’utilisateur doit rentrer un texte, celui-ci sera le titre du graphique représentant l’évolution de la variable
co2
dans le temps. L’application doit donc afficher le graphique avec le titre mis à jour (fonctionggtitle()
).
sidebarPanel()
, nommé titre
, avec un texte en fond grâce au paramètre placeholder
textInput("titre", "Titre du graphique", placeholder = "Ecrire votre titre ici")
graphique
, avant son affichagegraphique = graphique + ggtitle(input$titre)
L’utilisateur doit choisir une valeur entre 1 et 100 pour déterminer la taille de la fenêtre glissante pour le calcul de la moyenne mobile. Ce calcul sera fait grâce à la fonction
movingFun()
du packageraster
(à installer donc). La courbe des moyennes mobiles sera affichée en couleur (à choisir, cf la fonctioncolors()
pour la liste des couleurs possibles) sur le graphique.
slider
, nommé taille
, avec des valeurs possibles de 1 à 100, et 10 par défautsliderInput("taille", "Taille de la fenêtre glissante", min = 1, max = 100, value = 10)
raster
en début de fichierlibrary(raster)
data.frame
, avec l’ajout d’une variable moymob
qui contiendra les moyennes mobiles, en début du renderPlot()
co2_df = transform(co2_df,
moymob = movingFun(mesure, input$taille))
graphique = graphique +
geom_line(aes(y = moymob), col = "red")
L’utilisateur a le choix entre 3 couleurs (à définir par vous-même) pour la courbe de l’évolution du
co2
. On utilisera donc la couleur choisie pour le graphique. Vous devez définir une des couleurs par défaut.
couleur
radioButtons("couleur", "Couleur de la courbe", c("blue", "green", "orange"))
graphique = ggplot(co2_df, aes(date, mesure)) + geom_line(col = input$couleur)
L’utilisateur doit cocher pour avoir la courbe des moyennes mobiles affichées ou non (par défaut, elle sera affichée). Le graphique doit donc prendre en compte le choix de l’utilisateur.
afficheMoyMob
, coché par défautcheckboxInput("afficheMoyMob", "Affichier les moyennes mobiles", value = TRUE)
if (input$afficheMoyMob) {
graphique = graphique +
geom_line(aes(y = moymob), col = "red")
}
L’utilisateur va pouvoir choisir s’il veut le label des \(x\), le label des \(y\), et/ou le titre. Par défaut, seul le titre sera visible.
choix
, avec les trois valeurs possibles et la case concernant le titre cochécheckboxGroupInput("choix", "Paramètres d'affichage",
c("Titre", "Label en X", "Label en Y"),
"Titre")
graphique = ggplot(co2_df, aes(date, mesure)) +
geom_line(col = input$couleur) +
xlab("") + ylab("")
if ("Titre" %in% input$choix) {
graphique = graphique + ggtitle(input$titre)
}
if ("Label en X" %in% input$choix) {
graphique = graphique + xlab("Date")
}
if ("Label en Y" %in% input$choix) {
graphique = graphique +ylab("Mesure du CO2")
}
L’utilisateur doit choisir une date sur la période de mesure du
co2
(regardez l’aide pour plus d’informations). De cette date, nous ne retenons que le mois et l’année pour ajouter une ligne verticale correspondante sur le graphique.
date
, avec des valeurs entre le 1er janvier 1959 et le 31 décembre 1997dateInput("date", "Date à marquer", min = "1959-01-01", max = "1997-12-31",
"1980-01-01")
annee = as.numeric(format(input$date, "%Y"))
mois = as.numeric(format(input$date, "%m"))
date_calculee = annee + (mois - 1) / 12
graphique = graphique +
geom_vline(xintercept = date_calculee, lty = 2, col = "gray50")