Zacznij terazZacznij za darmo

Dodaj kolory do wykresu: wybór koloru

Pakiet colourpicker udostępnia kontrolkę wyboru koloru za pomocą funkcji colourInput(). Choć wybór koloru nie jest częścią pakietu shiny, działa dokładnie tak samo jak każdy inny element wejściowy.

Kontrolka wyboru koloru obsługuje wiele argumentów, które możesz samodzielnie zbadać – na razie skupimy się jednak tylko na podstawowych: inputId, label i value. Argument value przyjmuje kolor, który będzie używany jako wartość domyślna. Kolory można podawać w różnych formatach, ale najprostszym sposobem jest użycie angielskich nazw kolorów, takich jak "red" czy "yellow".

To ćwiczenie jest częścią kursu

Studia przypadków: tworzenie aplikacji webowych w Shiny w R

Zobacz kurs

Instrukcje do ćwiczenia

Poniżej znajdziesz kod aplikacji Shiny z poprzedniego ćwiczenia. Twoim zadaniem jest zastąpienie przycisków radiowych służących do wyboru koloru kontrolką wyboru koloru. Konkretnie:

  • Wczytaj pakiet colourpicker.
  • Znajdź funkcję UI, która tworzy przyciski radiowe do wyboru koloru, i zastąp ją kontrolką wyboru koloru (wiersz 12).
  • Kontrolka wyboru koloru powinna mieć ID "color", etykietę "Point color" oraz domyślny kolor "blue".

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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)
Edytuj i uruchom kod