Ajoutez des couleurs à votre graphique : saisie de couleur
Le package colourpicker fournit un champ de saisie de couleur via la fonction colourInput(). Même si ces champs ne font pas partie du package shiny, ils se comportent comme n’importe quelle autre entrée.
Un champ de couleur accepte de nombreux arguments que vous pouvez explorer, mais nous allons nous limiter aux arguments de base : inputId, label et value. L’argument value reçoit la couleur à utiliser comme valeur initiale. Les couleurs peuvent être indiquées sous plusieurs formats, mais le plus simple est d’utiliser des noms de couleur en anglais comme "red" ou "yellow".
Cet exercice fait partie du cours
Études de cas : créer des applications web avec Shiny en R
Instructions
Le code de l’application Shiny de l’exercice précédent est fourni. Votre tâche est de remplacer les boutons radio utilisés pour sélectionner une couleur par un champ de saisie de couleur. Plus précisément :
- Chargez le package
colourpicker. - Repérez la fonction de l’UI qui crée les boutons radio servant à sélectionner une couleur et remplacez-la par un champ de saisie de couleur (ligne 12).
- Le champ de couleur doit avoir l’ID "color", l’étiquette "Point color" et une couleur par défaut "blue".
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
# Load the colourpicker package
___
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("title", "Title", "GDP vs life exp"),
numericInput("size", "Point size", 1, 1),
checkboxInput("fit", "Add line of best fit", FALSE),
# Replace the radio buttons with a color input
radioButtons("color", "Point color",
choices = c("blue", "red", "green", "black")),
selectInput("continents", "Continents",
choices = levels(gapminder$continent),
multiple = TRUE,
selected = "Europe"),
sliderInput("years", "Years",
min(gapminder$year), max(gapminder$year),
value = c(1977, 2002))
),
mainPanel(
plotOutput("plot")
)
)
)
# Define the server logic
server <- function(input, output) {
output$plot <- renderPlot({
data <- subset(gapminder,
continent %in% input$continents &
year >= input$years[1] & year <= input$years[2])
p <- ggplot(data, aes(gdpPercap, lifeExp)) +
geom_point(size = input$size, col = input$color) +
scale_x_log10() +
ggtitle(input$title)
if (input$fit) {
p <- p + geom_smooth(method = "lm")
}
p
})
}
shinyApp(ui = ui, server = server)