在Shiny页面上,我注意到在给定的tabPanel上,所有renderPlot()语句的图都是同时显示的,而不是一个接一个地显示。 即使我在这些renderPlot之间添加Sys.sleep(n)......它只是取消渲染,但renderPlot()输出不按其执行顺序显示。我希望他们一个接一个地显示并提供用户进度条以指示正在绘制哪个绘图。谢谢。
答案 0 :(得分:0)
UI
tabPanel
(
sidebarLayout
(
sidebarPanel
(
fileInput('dataSource', 'Upload Data',accept = c('text/csv','text/comma-separated-values','text/tab-separated-values','text/plain','.csv','.tsv'),multiple=TRUE)
),
mainPanel
(
fluidRow(column(width = 3, style = "background-color: transparent;", class = "well",plotOutput("comp1", height = 300,width = 300)),
column(width = 3, style = "background-color: transparent;", class = "well",plotOutput("comp2", height = 300,width = 300))),
tags$hr()
)
)
)
服务器
values <- reactiveValues(df_data = NULL)
observeEvent(input$dataSource, { values$df_data <- read.csv(input$dataSource$datapath)})
Comp1 <- reactive({
plComp1 <- eqComp1(values$df_data [-(1:2)]))))
})
Comp2 <- reactive({
plComp2 <- eqComp2(values$df_data [-(1:2)]))))
})
output$comp1 <- renderPlot({
withProgress(message = 'Plotting in progress ...', value = 0, {
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.5)
}
plot( values@df_data[,1], Comp1())
})
})
output$comp2 <- renderPlot({
withProgress(message = 'Plotting in progress ...', value = 0, {
for (i in 1:15) {
incProgress(1/15)
Sys.sleep(0.5)
}
plot( values@df_data[,1], Comp2())
})
})