со следующим набором данных
import numpy as np
import holoviews as hv
from holoviews import opts
import param
import panel as pn
import panel.widgets as pnw
hv.extension('bokeh', 'matplotlib')
data = np.random.rand(100, 100, 3,20)
times = np.arange(0,10,.5)
channels = ['a','b','c']
ds = hv.Dataset((times,channels,
np.linspace(0., 1., 100),
np.linspace(0., 1., 100),
data),
kdims=['t', 'c', 'y', 'x'],
vdims=['T'])
Это поддерживает выбранный пользователем постоянный масштаб при изменении входного параметра t и c.
ds.to(hv.Image, ['y', 'x'])
Этот код, использующий определенные виджеты с панелью сбросьте масштаб при изменении входных параметров.
channel_selec = pnw.RadioButtonGroup(name='channel',options=channels,value='LWIR',width=250)
time_selec = pn.widgets.IntSlider(name='time', value=4, start=0, end=int(times[-1]) ,width=250)
@pn.depends(time=time_selec.param.value, channel=channel_selec.param.value,)
def plots(time=0,channel='a'):
img = ds.select(c=channel,t=time).to(hv.Image, ['y', 'x'])
layout = hv.Layout(img).cols(1)
layout.opts(opts.Image(cmap='inferno', width=400, height=400,))
return layout
widgets = pn.WidgetBox('#title',channel_selec,time_selec)
app = pn.Row(pn.Column(widgets,width=300), plots )
app
Как это можно решить?