2017-03-28 27 views
0

我希望只有按下按钮updt才能让此图表重新显示。这是我至今按下按钮更新时如何呈现ggplot图表?

--- 
title: "" 
author: 
output: 
    flexdashboard::flex_dashboard: 
    storyboard: true 

runtime: shiny 
--- 


```{r setup, include=FALSE} 
library(flexdashboard) 
library(ggplot2) 
library(dplyr) 
``` 

Column {data-width=650} 
----------------------------------------------------------------------- 

### Chart A 

```{r} 
actionButton('updt', 'Update chart') 
checkboxGroupInput('gear', 'number of gears', unique(mtcars$gear), (mtcars$gear)) 
observeEvent(eventExpr = input$updt , handlerExpr = { 
    renderPlot({ 
    dd <- mtcars %>% filter(gear %in% input$gear) 
    f1 <- ggplot(aes(mpg, disp), data=dd) + geom_point() 
    f1 
    }) 

}) 

``` 

回答

1

根据?observeEvent代码:

observeEvent返回一个观察者引用类对象

这不能被绘制。

你可以这样做:

observeEvent(eventExpr = input$updt , handlerExpr = { 
    output$myplot <- renderPlot({ 
    dd <- mtcars %>% filter(gear %in% isolate(input$gear)) 
    f1 <- ggplot(aes(mpg, disp), data=dd) + geom_point() 
    f1 
    }) 
}) 
plotOutput("myplot") 

但你仍然要isolate(input$gear)output$myplot是反应性的input$gear

所以最好是去掉observeEvent,加req(input$updt)使renderPlot反应吧和isolate(input$gear)

renderPlot({ 
    req(input$updt) 
    dd <- mtcars %>% filter(gear %in% isolate(input$gear)) 
    f1 <- ggplot(aes(mpg, disp), data=dd) + geom_point() 
    f1 
    }) 
+0

谢谢,是您的解决方案通常更喜欢'observeEvent'或者只是你喜欢的东西? – Dambo

+0

我更新了我的答案 – HubertL

相关问题