РЕДАКТИРОВАТЬ - перед тем, как попробовать observeEvent
решение:
В зависимости от того, что именно вы хотите построить, это может быть как facet_grid(. ~year)
, а не facet_grid(. ~input$year)
.
Если facet_grid(. ~input$year)
не то, что вы ищете, тогда ...
Вы можете попробовать observeEvent
из блестящей упаковки:
observeEvent(input$year, {
output$scatterplot <- renderPlot({
input$year
ggplot(pigs,
aes(x = sow_count, y = species, col = species)) +
geom_point() +
facet_grid(. ~year)
})
})
Как правило, всякий раз, когда объект input$year
изменяется, вы отображаете новый график.
Ваш пример будет выглядеть так:
library(shiny)
library(ggplot2)
pigs <- read.csv("pigs_data.csv")
# Define UI for application
ui <- fluidPage(
# Application title
titlePanel("Pig Breeding"),
sidebarLayout(
sidebarPanel(
#Allows user to choose a year which changes the distribution of plot points
selectInput(inputId = "year",
label = "Choose a year:",
choices = c(2016, 2017, 2018),
selectize = FALSE
)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("scatterplot")
)
)
)
# Define server logic
server <- function(input, output) {
observeEvent(input$year, {
output$scatterplot <- renderPlot({
input$year
ggplot(pigs,
aes(x = sow_count, y = species, col = species)) +
geom_point() +
facet_grid(. ~year)
})
})
}
# Run the application
shinyApp(ui = ui, server = server)
Я надеюсь, что это работает для вас:)