所以这是我的问题:
问题:
我尝试过:
.recalculating
添加到绘图中。但是,当按下其中一个执行按钮时,它将仅重新计算与该按钮相关的图,但是会从所有图中删除.recalculating
类(即使某些图尚未重新计算)。解决方法是让“转到”按钮更新所有图,但这从资源的角度来看并不理想。
要复制,请使用下面的代码和:
这是一个有关如何组织我的闪亮应用程序的有效示例:
library('shiny')
library('ggplot2')
ui <- fluidPage(
checkboxGroupInput(inputId = 'cyl', label = 'Cylinders:', choices = unique(mtcars$cyl), selected = unique(mtcars$cyl)),
actionButton('goButton', 'Update graph!'),
plotOutput('plot'),
radioButtons(inputId = 'vs', label = 'V-shaped 09:', choices = unique(mtcars$vs), selected = 1),
actionButton('goButton2', 'Update 2nd graph!'),
plotOutput('plot2'),
#change handlers
tags$script(HTML("$(document).on('change', 'input, select', function(event) {
$('.shiny-bound-output').addClass('recalculating')
})"))
)
server <- function(input, output) {
#first data.frame - cyl
df <- reactive({
mtcars[mtcars$cyl %in% input$cyl,]
})
#second data frame - vs9
df2 <- reactive({
mtcars[mtcars$vs == input$vs,]
})
output$plot <- renderPlot({
#only run if goButton pressed
if (input$goButton == 0)
return()
isolate({
ggplot(df(), aes(x=hp, y=disp)) +
geom_point()
})
})
output$plot2 <- renderPlot({
#only update if goButton2 pressed
if(input$goButton2 == 0)
return()
isolate({
ggplot(df2(), aes(x=hp, y=disp)) +
geom_point()
})
})
}
shinyApp(ui, server)