R Shiny - 如何使用操作按钮在两个不同的绘图之间切换
R Shiny - How do I toggle between two different plots using an action button
在我的应用程序中,我希望 plot1 默认显示,然后如果单击操作按钮,让 plot2 替换 plot1。如果再次点击,则恢复到plot1,依此类推。
server <- function(input, output, session) {
plot1 <- (defined here)
plot2 <- (defined here)
which_graph <- reactive({
if (input$actionbutton == 1) return(plot1)
if (input$actionbutton == 2) return(plot2)
})
output$plot <- renderPlot({
which_graph()
})
}
您可以创建一个 reactiveValue 并使用 actioButton 来切换该值。例如
library(shiny)
ui <- fluidPage(
plotOutput("plot"),
actionButton("button", "Click")
)
server <- function(input, output, session) {
whichplot <- reactiveVal(TRUE)
plot1 <- ggplot(mtcars) + aes(mpg, cyl) + geom_point()
plot2 <- ggplot(mtcars) + aes(hp, disp) + geom_point()
observeEvent(input$button, {
whichplot(!whichplot())
})
which_graph <- reactive({
if (whichplot()) {
plot1
} else {
plot2
}
})
output$plot <- renderPlot({
which_graph()
})
}
shinyApp(ui, server)
此处 whichplot
开始时为 TRUE,然后每次按下操作按钮它都会在 TRUE/FALSE 之间切换。这样你就不会改变 actionButton 的值;你只是在每次按下时更新状态。
在我的应用程序中,我希望 plot1 默认显示,然后如果单击操作按钮,让 plot2 替换 plot1。如果再次点击,则恢复到plot1,依此类推。
server <- function(input, output, session) {
plot1 <- (defined here)
plot2 <- (defined here)
which_graph <- reactive({
if (input$actionbutton == 1) return(plot1)
if (input$actionbutton == 2) return(plot2)
})
output$plot <- renderPlot({
which_graph()
})
}
您可以创建一个 reactiveValue 并使用 actioButton 来切换该值。例如
library(shiny)
ui <- fluidPage(
plotOutput("plot"),
actionButton("button", "Click")
)
server <- function(input, output, session) {
whichplot <- reactiveVal(TRUE)
plot1 <- ggplot(mtcars) + aes(mpg, cyl) + geom_point()
plot2 <- ggplot(mtcars) + aes(hp, disp) + geom_point()
observeEvent(input$button, {
whichplot(!whichplot())
})
which_graph <- reactive({
if (whichplot()) {
plot1
} else {
plot2
}
})
output$plot <- renderPlot({
which_graph()
})
}
shinyApp(ui, server)
此处 whichplot
开始时为 TRUE,然后每次按下操作按钮它都会在 TRUE/FALSE 之间切换。这样你就不会改变 actionButton 的值;你只是在每次按下时更新状态。