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
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
ggplot2esistente in un graficoplotly(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)