R闪亮:输入输入或按下操作按钮时刷新图

时间:2018-10-19 18:46:07

标签: r shiny data-science shiny-reactivity

我对R Shiny还是很陌生,但是一段时间以来一直遇到以下问题,希望您能提供一些帮助:

  • 我尝试刷新R Shiny中的图,如果输入了新的输入参数,则应该刷新该图。 OR 这应该很简单,但是尽管谷歌搜索/阅读了一段时间的指令,但不幸的是我还是无法解决。任何建议都将被推荐。网上的任何解决方案似乎都将整个renderplot函数放到observeEvent函数中,但是我还需要在它之外添加renderplot,以解决只按输入而不输入操作按钮的可能性。

  • 我毫不费力地创建了一个(渲染)图,该图要么在输入新输入时专门刷新,要么在按下按钮时专门刷新。

  • 但是,当同时执行两项操作时,我失败了:我首先尝试在一次watchEvent函数中两次复制包括结果输出在内的renderplot函数(以考虑单击操作按钮),一次在watchEvent(仅考虑刷新图的输入),但这只会导致显示灰色的图形,该图形在按下操作按钮约10秒后会刷新。我想将通过单击操作按钮生成的反应式单击输入直接添加到observe event之外的renderplot上,但是到目前为止,我无法运行它。任何建议将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:1)

喜欢这个吗?:

编辑:无需将selectInput传递给反应性Vals。此操作相同:

library(shiny)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectInput(inputId="select", label="title", choices=LETTERS[1:3], selected = "A"),
      actionButton(inputId="btn", label="refresh")
    ),
    mainPanel(
      plotOutput("scatterPlot")
    )
  )
)

server <- function(input, output) {

  plotSettings <- reactiveValues()

  observeEvent(c(input$btn, input$select), {
    plotSettings$values <- runif(100,1,100)
    # plotSettings$title <- input$select
  }, ignoreNULL = FALSE)

  output$scatterPlot <- renderPlot({
    plot(plotSettings$values, main=input$select)
  })
}

shinyApp(ui = ui, server = server)