2013-07-15 46 views
2

我有一個輸出圖依賴於被稱爲datasetInput的反應函數。每當我改變輸入變量時,輸出函數都會更新,但是我在客戶端看到的圖並不會改變。我輸出ggplot使用的數據來生成繪圖並且數據正在改變。我不知道發生了什麼事。ggplot和rshiny圖不刷新

datasetInput <- reactive({  
    data <- input$globalData 
    table <- c() 
    ... 
    table 
}) 

output$plot <- renderPlot({  
    table <- datasetInput() 
    cat('32hr: ',unlist(table[which(table$group=='32hr'),3]),'\n')  
    cat('24hr: ',unlist(table[which(table$group=='24hr'),3]),'\n')  
    range <- max(table$centroidDistances.RG) - min(table$centroidDistances.RG) 
    cat('range: ',range,'\n') 
    plot <- ggplot(table,aes(x=table$centroidDistances.RG,fill=table$group)) + 
     geom_histogram(aes(y=..density..),pos="dodge") + 
     geom_density(alpha=0.2) 
    print(plot) 
},height=300,width=600) 

我以前沒有見過這個問題,我怎麼能得到客戶改變其輸出時output$plot變化(這是一個具體的問題,以ggplot?)

+0

猜測'cat'語句的輸出會干擾'renderPlot'繪圖輸出。你可以在聲明之外移動它們,看看情節是否改變?另外,我不知道你可以在花括號外面叫「高度」和「重量」。我以爲你必須用'})'關閉一個無效輸出? – intra

+0

我認爲貓語句根本不會影響輸出,與花括號內或外花括號相同。 –

+0

高度和寬度也可以位於右大括號外。它們只是renderPlot的更多參數。 –

回答

1

這個問題似乎通過設置固定環境=環境()ggplot內:

ggplot(table,aes(x=table$centroidDistances.RG,fill=table$group),environment=environment()) + 
    geom_histogram(aes(y=..density..),pos="dodge",binwidth=range/30,minx=0,width=600) + 
    geom_density(alpha=0.2) 

不知道爲什麼這事解決,但包括這個環境的設置使圖形更新客戶端上的預期。