ggplot和rshiny图不会刷新

时间:2013-07-15 16:47:13

标签: r ggplot2 shiny

我的输出图取决于名为datasetInput的反应函数。每当我更改输入变量时,输出函数都会更新,但我在客户端上看到的图表最终不会更改。我输出ggplot使用的数据来生成绘图,数据正在变化。我不知道最近会发生什么。

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的特定问题吗?)

1 个答案:

答案 0 :(得分:2)

通过在ggplot中设置environment = environment()来解决此问题:

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)

不确定为什么这会解决问题,但包含此环境设置会使图表在客户端按预期更新。