R Shiny:如何将相同的plot分配给两个不同的plotOutput



这篇文章[1]:Shiny's tabsetPanel不显示多个选项卡中的绘图包含了我想要实现的完美示例。因为我不想多次创建相同的情节,但只有一次提出的解决方案不适合我。

回答下面问题的用户提到可以将相同的plot分配给两个不同的plotoutput,这正是我想要做的。

有谁能帮我弄清楚这个吗?

每个plot都需要一个唯一的id,因此您需要多次调用render类型函数来分配该id。如果图形的渲染是一个瓶颈,你可以将它渲染一次,例如png,并显示图形。

library(shiny)
runApp(list(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    plotOutput('plot1'),
    plotOutput('plot2')
  ),
  server = function(input, output) {
    myPlot <- reactive({function(){hist(runif(input$n))}})
    output$plot1 <- renderPlot({myPlot()()})
    output$plot2 <- renderPlot({myPlot()()})
  }
))

或者您可以将服务器函数定义为:

  server = function(input, output) {
    myPlot <- reactive({hist(runif(input$n))})
    output$plot1 <- renderPlot({myPlot()})
    output$plot2 <- renderPlot({plot(myPlot())})
  }

最新更新