Bokeh: сохранить Zoom Config при изменении параметров через виджеты - PullRequest
0 голосов
/ 04 апреля 2020

со следующим набором данных

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

Как это можно решить?

...