Mach deinen Plot interaktiv
plotly ist ein beliebtes Paket, um interaktive Plots in Shiny zu erstellen. Es gibt mehrere andere Pakete für interaktive Visualisierungen, aber wir verwenden plotly vor allem wegen der Funktion ggplotly(), die einen ggplot2-Plot in einen interaktiven Plot umwandelt.
Diese Übung ist Teil des Kurses
Fallstudien: Webanwendungen mit Shiny in R erstellen
Anleitung zur Übung
Der Code für die Shiny-App aus der letzten Übung ist vorgegeben. Deine Aufgabe ist es, den ggplot2-Plot durch einen plotly-Plot zu ersetzen. Konkret:
- Lade das Paket
plotly. - Ersetze die Plot-Output-Funktion durch
plotlyOutput(Zeile 20). - Ersetze die Plot-Render-Funktion durch
renderPlotly(Zeile 29). - Wandle den vorhandenen
ggplot2-Plot in einenplotly-Plot um (Zeile 31).
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)