CommencezCommencez gratuitement

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

Voir le cours

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)
Modifier et exécuter le code