R 闪亮服务器在浏览器上重新绘制谷歌图表调整大小

R 闪亮服务器在浏览器上重新绘制谷歌图表调整大小,r,shiny-server,shinydashboard,R,Shiny Server,Shinydashboard,我有一个使用闪亮仪表板的闪亮服务器。我有一个Google图表(AnnotationChart),它不会在浏览器窗口调整大小时自动调整大小。我可以监听resize事件并对其做出反应(在javascript中),但我不知道如何使用属于它的数据和选项让图表对象重新绘制-我只希望它以容器宽度/高度的90%重新绘制 我觉得这应该比我发现的要简单。如果我调整浏览器窗口的大小,然后更改一个被动元素(如更改输入控件),Shiny将以新的正确宽度(即将其调整为容器的90%)重新绘制图表以及所有应重新绘制的内容。感

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

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

基本上,这个问题可以归结为:

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

干杯


Andy。

我已经使用googleVis R软件包解决了这个问题,我猜你可以使用与我相同的方法,尽管我不确定你所有的东西是如何组合在一起的,因为你更倾向于JavaScript

在任何R函数中,都可以使用session$clientData变量在浏览器窗口中建立对图形状态的依赖关系。在我的例子中,我使用renderGvis,因此我只需在函数中调用session$clientData$output\u trend\u 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))

})
输出$gauge