ÎncepețiÎncepe gratuit

Fă graficul interactiv

plotly este un pachet popular pentru crearea de grafice interactive în Shiny. Există și alte pachete pentru vizualizări interactive, însă vom folosi plotly în principal datorită funcției sale ggplotly(), care convertește un grafic ggplot2 într-unul interactiv.

Acest exercițiu face parte din cursul

Studii de caz: Construirea aplicațiilor web cu Shiny în R

Vezi cursul

Instrucțiuni pentru exercițiu

Codul aplicației Shiny din exercițiul anterior este deja disponibil. Sarcina ta este să înlocuiești graficul ggplot2 cu unul plotly. Mai concret:

  • Încarcă pachetul plotly.
  • Înlocuiește funcția de afișare a graficului cu plotlyOutput (linia 20).
  • Înlocuiește funcția de randare a graficului cu renderPlotly (linia 29).
  • Convertește graficul ggplot2 existent într-un grafic plotly (linia 31).

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# Load the plotly 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),
      colourInput("color", "Point color", value = "blue"),
      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(
      # Replace the `plotOutput()` with the plotly version
      plotOutput("plot")
    )
  )
)

# Define the server logic
server <- function(input, output) {
  # Replace the `renderPlot()` with the plotly version
  output$plot <- renderPlot({
    # Convert the existing ggplot2 to a plotly plot
    ___({
      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)
Editează și rulează codul