After upgrade from Plotly 4.5.6 to Plotly 4.6.0 (or higher), the plot height is incorrectly calculated when set reactively in plot_ly. This happens upon window resizing or tabsetPanel selection.
Prerequisites
- Plotly height is chosen via
plot_ly(..., height=<some dependency>) <some dependency>is a reactive Value (input$heightin the example below)
Problem
- after resizing window, the height is set to the first value of the selectInput
Example
- When chosen "800" in the selectInput, the plot is correctly drawn with a height of 800px:
- After a resize of the window, the height is changed to the first value of the
selectInput(100px), even though this value did not change at all:
The same problem happens if there is a tabsetPanel in the page (e.g. below the plot). The plot height is changed when a different tab is clicked.
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)
What I tried so far
- Putting the
heightargument inrenderPlotlyworks initially, but since the Plotly itself does never change its height, the plot itself stays at 800px the whole time (just the container height is changed):
ui: uiOutput("plot")
server:
output$plot <- renderUI({ plotlyOutput("plotly", height=input$height) })
output$plotly <- renderPlotly({ plot_ly(mtcars, x=~gear, y=~cyl)})
- When I additionally make
output$plotlydependent oninput$height, the Plots "jumps" immediately after selecting any other height:
output$plotly <- renderPlotly({ plot_ly(mtcars, x=~gear, y=~cyl, height=input$height) })
Note that all of this also happens if there is a simple tabsetPanel below the plot and another tab is chosen there.


renderPlotlyrather thanplot_ly? - Gregor de Cillia