如何在更新多个sliderInput时避免renderPlot多次运行?

时间:2015-02-08 07:35:10

标签: r shiny

我想知道在按下重置按钮时是否可以避免多次渲染绘图功能,同时允许在任何滑块更改时渲染绘图。

到目前为止,滑块正确更新。每当滑块值改变时,绘图就会按照它应该的方式呈现。当我按下重置按钮时,我想避免绘制两次(每个updateSliderInput调用一次)的绘图。这是一个简单的例子,也许延迟并不明显,但是当影响绘图的更多输入以编程方式更新并且绘图需要花费大量时间来渲染时,这个问题尤其令人烦恼。

可重复示例:

server.r

library(shiny)

shinyServer(function(input, output, clientid, session) {

  x <- reactive({
    input$slider1
  })

  y <- reactive({
    input$slider2
  })

  output$distPlot <- renderPlot({
    plot(x(), y())
  })

  observe({
    if(input$resetButton != 0) {
      updateSliderInput(session, "slider1", value=30)
      updateSliderInput(session, "slider2", value=30)

    }
  })
})

ui.r

library(shiny)

shinyUI(fluidPage(

  # Application title
  titlePanel("Example"),

  # Sidebar with a slider input for number of bins
  sidebarLayout(
    sidebarPanel(
      sliderInput("slider1",
                  "X:",
                  min = 1,
                  max = 50,
                  value = 30),
      sliderInput("slider2",
                  "y:",
                  min = 1,
                  max = 50,
                  value = 30),
      actionButton("resetButton", "Reset!")
    ),
    # Show a plot of the generated distribution
    mainPanel(
      plotOutput("distPlot")
    )
  )
))

0 个答案:

没有答案