这篇文章[1]:Shiny's tabsetPanel not displaying plots in multiple tabs包含了我想要实现的完美范例。因为我不想创建相同的情节太多次,但只是一旦提出的解决方案对我不起作用。
回答以下问题的用户提到可以将相同的绘图分配给两个不同的plotOutputs,这正是我想要做的。
有人可以帮我解决这个问题吗?
答案 0 :(得分: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())})
}