Ajoutez des couleurs à votre graphique : saisie de couleur
Le paquet colourpicker fournit un champ de saisie de couleur, accessible avec la fonction colourInput(). Même si ces champs ne font pas partie du paquet shiny, ils se comportent comme n'importe quelle autre entrée.
Un champ de couleur peut accepter plusieurs arguments que vous pourrez explorer, mais nous n'utiliserons ici que les arguments de base : inputId, label et value. L'argument value accepte une couleur à utiliser comme valeur initiale. Les couleurs peuvent être précisées sous différents formats, mais le plus simple est d'employer des noms de couleurs en anglais comme « red » ou « yellow ».
Cette activité fait partie du cours
Études de cas : créer des applications Web avec Shiny en R
Instructions de l’exercice
Le code de l'application Shiny de l'exercice précédent est fourni. Votre tâche consiste à remplacer les boutons radio utilisés pour choisir une couleur par un champ de couleur. Plus précisément :
- Chargez le paquet
colourpicker. - Repérez la fonction d'interface (UI) qui crée les boutons radio servant à sélectionner une couleur, puis remplacez-la par un champ de couleur (ligne 12).
- Le champ de couleur doit avoir l'ID « color », l'étiquette « Point color » et la couleur par défaut « blue ».
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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)