如何为ggplot创建eventReactive或observeEvent?

时间:2017-03-20 21:35:30

标签: r

我想点击动作按钮刷新ggplot。我试图同时使用:eventReactive和observeEvent,它不起作用。

rm(server)
rm(map3)


ui <- fluidPage(

  actionButton("button","button"),
  plotOutput("rys")
)


server <- function(input, output){

  map3 <- eventReactive(input$button,{
    ggplot(data.frame(a=runif(10)*10,b=runif(10)*10),aes(a,b))+geom_point()
  })

  output$rys <- renderPlot({ 
    map3
    })
}



shinyApp(ui=ui, server=server)

请帮帮我,我在R中编码了5个小时,我很累,整个晚上都有很多工作:(

1 个答案:

答案 0 :(得分:0)

由于您在单击按钮时似乎真的只是在更改数据,所以如何构建您的应用程序

library(shiny)
library(ggplot2)

ui <- fluidPage(

  actionButton("button","button"),
  plotOutput("rys")
)

server <- function(input, output){
 mydata  <- eventReactive(input$button,{
    data.frame(a=runif(10)*10, b=runif(10)*10)   
  })

  output$rys <- renderPlot({ 
    if(!is.null(mydata())) {
      ggplot(mydata(), aes(a,b))+geom_point()
    }
  })
}

shinyApp(ui=ui, server=server)

此处mydata是一个反应性data.frame,每次单击该按钮时都会更新。然后使用更新的数据在renderPlot调用中绘制图表。

如果您刚刚使用

,您的代码也会有用
 output$rys <- renderPlot({ 
    map3()
 })

您需要使用()来获取反应对象的值。