test-shiny / app.R
jtrecenti's picture
Update app.R
6628ae0
library(shiny)
library(bslib)
library(dplyr)
library(ggplot2)
df <- readr::read_csv("penguins.csv")
# Find subset of columns that are suitable for scatter plot
df_num <- df |> select(where(is.numeric), -Year)
ui <- page_fillable(
theme = bs_theme(bootswatch = "minty"),
layout_sidebar(
sidebar(
varSelectInput("xvar", "X variables", df_num, selected = "Bill Length (mm)"),
varSelectInput("yvar", "Y variables", df_num, selected = "Bill Depth (mm)"),
checkboxGroupInput("species", "Filter by species",
choices = unique(df$Species), selected = unique(df$Species)
)
),
plotOutput("scatter")
)
)
server <- function(input, output, session) {
subsetted <- reactive({
req(input$species)
df |> filter(Species %in% input$species)
})
output$scatter <- renderPlot({
p <- ggplot(subsetted(), aes(.data[[input$xvar]], .data[[input$yvar]])) +
theme(legend.position = "bottom")
p
})
}
shinyApp(ui, server)