R / Shiny:窗口调整大小后丢弃的Plotly反应高度

时间:2017-07-07 11:49:49

标签: r shiny plotly

从Plotly 4.5.6升级到Plotly 4.6.0(或更高版本)后,在plot_ly中被动设置时,图表高度计算错误。这会在窗口大小调整或tabsetPanel选择时发生。

先决条件

  • 通过plot_ly(..., height=<some dependency>)
  • 选择Plotly高度
  • <some dependency>是一个反应值(下例中的input$height

问题

  • 调整窗口大小后,高度设置为selectInput
  • 的第一个值

示例

  • 选择&#34; 800&#34;在selectInput中,绘图正确绘制,高度为800px:

ex1

  • 调整窗口大小后,高度将更改为selectInput(100px)的第一个值,即使此值根本没有变化:

ex2

如果页面中有tabsetPanel(例如情节下方),则会出现同样的问题。单击其他选项卡时,图表高度会发生变化。

library(shiny)
library(plotly)


ui <-shinyUI(fluidPage(
       selectInput("height", "Choose desired height", choices=c(100,800)), 
       plotlyOutput("plot")))

server <- shinyServer(function(input,output, session){
  output$plot <- renderPlotly({
    plot_ly(mtcars, x=~gear, y=~cyl, height = input$height)
  })
})

shinyApp(ui,server)

到目前为止我尝试了什么

  1. height中放置renderPlotly参数最初是有效的,但由于Plotly本身从未改变其高度,因此绘图本身始终保持在800px(仅更改容器高度):< / LI>

    ui:uiOutput("plot")

    服务器:

    output$plot <- renderUI({ plotlyOutput("plotly", height=input$height) })  
    output$plotly <- renderPlotly({ plot_ly(mtcars, x=~gear, y=~cyl)})
    
    1. 当我另外使output$plotly依赖input$height时,情节&#34;跳跃&#34;选择任何其他高度后立即:
    2. output$plotly <- renderPlotly({ plot_ly(mtcars, x=~gear, y=~cyl, height=input$height) })

      请注意,如果绘图下方有一个简单的tabsetPanel并且在那里选择了另一个标签,则所有这些都会发生。

1 个答案:

答案 0 :(得分:1)

此问题已最终解决,请参见this bug on github:。在版本4.8.0 中,此行为已得到纠正。

请注意,您需要将100%的高度添加到plotlyOutput,即plotlyOutput("plot", height = '100%'),以获得完整的解决方案(这将适当地设置不可见的容器空间)。