CommencerCommencer gratuitement

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

Afficher le cours

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