2016-03-26 48 views
1

在Shiny頁面上,我注意到在給定的tabPanel上,所有renderPlot()語句的圖都是同時顯示的,而不是一個接一個地顯示。 即使當我在這些renderPlot之間添加Sys.sleep(n)時...它只是簡單地渲染渲染,但renderPlot()輸出不會按其執行順序顯示。我希望他們能夠一個接一個地顯示,並提供用戶進度條來指示哪個繪圖正在繪製。謝謝。Shiny中兩個renderPlot()的順序

+1

怎麼樣一些示例代碼? –

+0

在這裏,我正在一個接一個地繪製兩個情節......他們只是一次出現,並不像我期望的那樣。我想要進度條顯示第一個進度條,然後一旦第一個繪製出第二個進度條顯示,然後出現第二個圖。無論出於何種原因,它不允許我發佈超過特定字符的字符長度,以便將代碼添加爲答案。 – Ali

回答

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([email protected]_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([email protected]_data[,1], Comp2()) 

    }) 
    })