GridSpec sizing breaks when plot in DynamicMap updates

See the below gif demonstrating the problem. The initial scaling (or stretching) applied by GridSpec breaks when the plot held by the DynamicMap updates. Code copy-pasted below

import panel as pn
import holoviews as hv
import numpy as np
pn.extension()

select_widget = pn.widgets.Checkbox(name='select')

@pn.depends(select=select_widget.param.value)
def get_points(select):
    if select:
        return hv.Points(np.random.rand(10,10)).opts(title='A')
    else:
        return hv.Points(np.random.rand(10,10)).opts(title='B')

plot = hv.DynamicMap(get_points)
    
grid_layout = pn.GridSpec(sizing_mode='scale_both')
grid_layout[0,0] = plot

app = pn.Column(select_widget, grid_layout)

app
1 Like

Hello,

you should add the option responsive=True to your plots

import panel as pn
import holoviews as hv
import numpy as np
pn.extension()

select_widget = pn.widgets.Checkbox(name='select')

@pn.depends(select=select_widget.param.value)
def get_points(select):
    if select:
        return hv.Points(np.random.rand(10,10)).opts(title='A')
    else:
        return hv.Points(np.random.rand(10,10)).opts(title='B')

plot = hv.DynamicMap(get_points)
    
grid_layout = pn.GridSpec(sizing_mode='scale_both')
grid_layout[0,0] = plot.opts(responsive=True)

app = pn.Column(select_widget, grid_layout)

app

I thought that GridSpec was supposed to add responsive=True to all elements contained within it?