IniziaInizia gratis

Aggiungi colori al tuo grafico: input colore

Il pacchetto colourpicker fornisce un input per il colore, disponibile tramite la funzione colourInput(). Anche se gli input colore non fanno parte del pacchetto shiny, si comportano come qualsiasi altro input.

Un input colore può avere molti argomenti che puoi esplorare, ma qui useremo solo quelli di base: inputId, label e value. L'argomento value accetta un colore da usare come valore iniziale. I colori possono essere specificati in diversi formati, ma il modo più semplice è usare i nomi dei colori in inglese come "red" o "yellow".

Questo esercizio fa parte del corso

Casi di studio: creare applicazioni web con Shiny in R

Visualizza il corso

Istruzioni dell'esercizio

È fornito il codice della Shiny app dell'esercizio precedente. Il tuo compito è sostituire i pulsanti di opzione usati per selezionare un colore con un input colore. In particolare:

  • Carica il pacchetto colourpicker.
  • Trova la funzione UI che crea i pulsanti di opzione utilizzati per la selezione del colore e sostituiscila con un input colore (riga 12).
  • L'input colore deve avere ID "color", un'etichetta "Point color" e il colore predefinito "blue".

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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)
Modifica ed esegui il codice