在R Shiny中动态调整ggplot2图形的大小

4

我尝试过以下方法:

output$plot <- renderPlot({
  getPlot()
}, width=input$plotX, height=input$plotY) # referring to two numericInput boxes

但是我遇到了这个错误:

Error in .getReactiveEnvironment()$currentContext() : 没有活动的反应性上下文,无法进行操作。 (你试图做一些只能在反应式表达式或观察者内部完成的事情。)

帮助文本建议我使用函数,并且在这些函数中可以引用反应性值等。但是即使我这样做了,仍然会出现相同的错误...

有没有一种方法让用户根据他们输入的值调整绘图的大小?

1个回答

7
您可以使用 shiny:::exprToFunction 函数将反应式值包装到一个函数中。
例如:
output$plot <- renderPlot({
  getPlot()
}, width=exprToFunction(input$plotX), 
   height=exprToFunction(input$plotY)))

应该可以解决问题。

完全成功了!不过如果我把它做得太高,图表就会像这样溢出到下一个 UI 元素中:img另外,有没有办法改变分辨率?当绘图设置为太大的尺寸时,它开始看起来很糟糕...也许这应该由 ggplot() 调用来完成? - vocaloidict
昨天我实际上正在寻找与您的确切问题的解决方案,然后我弄清楚了。我想你可以修改其容器的CSS溢出属性以避免溢出。 ;) - Xin Yin
嗨,@vocaloidict,你是否找到了如何自定义容器高度以避免绘图溢出的方法? - TheComeOnMan
嗨@XinYin,我正在使用http://www.w3schools.com/cssref/pr_pos_overflow.asp作为overflow属性的参考,但它们都试图指定如何控制溢出,而我想要容器扩展以适应其内容。 - TheComeOnMan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接