【问题标题】:R Shiny: How to assign the same plot to two different plotOutputR Shiny:如何将相同的图分配给两个不同的 plotOutput
【发布时间】:2014-10-14 21:59:53
【问题描述】:

这篇文章 [1]:Shiny's tabsetPanel not displaying plots in multiple tabs 包含了我想要实现的完美示例。因为我不想多次创建相同的情节,但只要提出的解决方案对我不起作用。

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

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

【问题讨论】:

  • 欢迎来到 Stack Overflow。这不是在这里提问的好方法。到目前为止,您是否尝试过任何方法来解决您的问题?首先展示你的努力,这样人们就可以展示他们的努力。请先阅读FAQHow to Askhelp center
  • 感谢您的欢迎。我确实尝试了一些想法,但我认为在这里发布代码没有用处,因为它比帮助其他用户理解问题的性质更令人困惑。我也花了很多时间在网络上寻找相关的东西,但不幸的是我仍然没有想出解决方案。

标签: r plot shiny


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-26
    • 2021-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多