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

问题描述 投票:0回答:2

这篇文章 [1]:Shiny 的 tabsetPanel 不在多个选项卡中显示绘图 包含了我想要实现的完美示例。因为我不想多次创建相同的图,但仅一次所提出的解决方案对我不起作用。

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

有人可以帮我解决这个问题吗?

r plot shiny
2个回答
3
投票

每个图都需要一个唯一的 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())})
  }

0
投票

简单、清晰且令人难以置信的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.