R Shiny App:使用renderPlot expr输入的大小绘图区域

时间:2017-05-17 22:19:11

标签: r shiny

是否可以根据renderPlot expr中创建的某个对象更改闪亮绘图区域的高度。

这是一个简单的例子,几乎做我需要的事情。这会根据会话特征调整窗口大小:

library(shiny)
runApp(list(
  ui = fluidPage(
    plotOutput("plot1", height="auto")
  ),
  server = function(input, output, session) {
    output$plot1 <- renderPlot({
      plot(cars)
    }, height = function() {
      session$clientData$output_plot1_width
    })
  }
))

然而,我不是根据会话特征调整绘图区域的大小,而是根据我在renderPlot表达式(renderPlot({}))中计算的内容来调整它的大小,如下所示: / p>

library(shiny)
runApp(list(
  ui = fluidPage(
    plotOutput("plot1", height="auto")
  ),
  server = function(input, output, session) {
    output$plot1 <- renderPlot({
      plot(cars)
    }, height = length(unique(cars$speed)))
  }
))

在这种情况下,我在l的表达式中创建renderPlot,然后尝试使用l来调整表达式之外的绘图区域。

感谢任何潜在客户!

1 个答案:

答案 0 :(得分:1)

您可以使用renderUI/uiOutput动态设置绘图的高度,使用reactiveValuesrenderPlot转移值:

runApp(list(
  ui = fluidPage(uiOutput("ui1")),
  server = function(input, output, session) {
    my <- reactiveValues(l = 500)

    output$ui1 <- renderUI(plotOutput("plot1", height=my$l))

    output$plot1 <- renderPlot({
      my$l <- length(unique(cars$speed))*100
      plot(cars)
    })
  }
))