IniziaInizia gratis

Rendi interattivo il tuo grafico

plotly è un pacchetto molto usato per creare grafici interattivi in Shiny. Esistono anche altri pacchetti per visualizzazioni interattive, ma useremo plotly soprattutto grazie alla funzione ggplotly(), che converte un grafico ggplot2 in uno interattivo.

Questo esercizio fa parte del corso

Casi di studio: creare applicazioni web con Shiny in R

Visualizza il corso

Istruzioni dell'esercizio

Il codice della Shiny app dell'esercizio precedente è fornito. Il tuo compito è sostituire il grafico ggplot2 con un grafico plotly. In particolare:

  • Carica il pacchetto plotly.
  • Sostituisci la funzione di output del grafico con plotlyOutput (riga 20).
  • Sostituisci la funzione di render del grafico con renderPlotly (riga 29).
  • Converte il grafico ggplot2 esistente in un grafico plotly (riga 31).

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

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