1

我有一个使用 Shiny Dashboard 的 Shiny 服务器。我有一个不会在浏览器窗口调整大小时自动调整大小的 Google 图表(AnnotationChart)。我可以监听 resize 事件并对其做出反应(在 javascript 中),但我不知道如何使用属于它的数据和选项让图表对象重绘 - 我只想让它重绘 90%其容器的宽度/高度。

我觉得这应该比我发现的要简单。如果我调整浏览器窗口的大小然后更改反应元素(例如更改输入控件),Shiny 将以新的正确宽度重绘图表以及应重绘的所有内容(即,将其大小调整为容器的 90%) . 感觉就像我可以从 javascript 触发重绘事件(无论它是什么),或者模拟对输入元素的更改,这可能会让我有所收获。

从本质上讲,这个问题可以归结为:

在 Shiny 中,如何强制重绘不会在浏览器调整大小时自动调整大小的图表?

干杯,

安迪。

4

1 回答 1

1

我已经使用 googleVis R 包解决了这个问题,我猜你可以使用与我相同的方法,尽管我不确定你所拥有的一切是如何组合在一起的,因为你更多的是在 JavaScript 方面。

在任何 R 函数中,您都可以使用 session$clientData 变量在浏览器窗口中建立对图形状态的依赖关系。所以在我的情况下,我使用的是 renderGvis ,所以我只是在函数中调用 session$clientData$output_trend_width (这是一个不同的图表,但显然它们都同时改变),所以每当它改变时,情节都会重绘合适的大小。就我而言,我只关心宽度,但如果这对您的情况很重要,您显然也可以调用高度。

output$gauge <- renderGvis({

# dependence on size of plots to detect a resize

session$clientData$output_trend_width

df <- data.frame(Label = "Bounce %", Value = 25)

gvisGauge(df,
          options = list(min = 0, max = 100, greenFrom = 0,
                         greenTo = 50, yellowFrom = 50, yellowTo = 70,
                         redFrom = 70, redTo = 100))

})

希望有帮助吗?

于 2015-09-05T15:46:43.493 回答