我正在使用Panel的滑块小部件检查一些数据,并且我想将此小部件的值用作其他函数的参数。 我基于此代码构建了自己的代码:
import hvplot.pandas
import panel as pn
import holoviews as hv
from bokeh.sampledata.sea_surface_temperature import sea_surface_temperature
pn.extension()
bins = pn.widgets.IntSlider(name='Number of bins', start=5, end=25, step=5, value=10)
kde = pn.widgets.Checkbox(name='Show density estimate')
observations = pn.widgets.Checkbox(name='Show individual observations')
bandwidth = pn.widgets.FloatSlider(name='KDE Bandwidth', start=0.1, end=1)
@pn.depends(bins.param.value, kde.param.value,
observations.param.value, bandwidth.param.value)
def get_plot(bins, kde, obs, bw):
plot = sea_surface_temperature.hvplot.hist(bins=bins, normed=True, xlabel='Temperature (C)', padding=0.1)
if kde:
plot *= sea_surface_temperature.hvplot.kde().opts(bandwidth=bw)
if obs:
plot *= hv.Spikes(sea_surface_temperature, 'temperature').opts(
line_width=0.1, alpha=0.1, spike_length=-0.01)
return plot
widgets = pn.WidgetBox('## Sea surface temperatures', bins, observations, kde)
def add_bandwidth(event):
if event.new:
widgets.append(bandwidth)
else:
widgets.remove(bandwidth)
kde.param.watch(add_bandwidth, 'value')
pn.Row(widgets, get_plot).servable()
将我的问题放在前面的代码中,我想使用垃圾箱的值。为此,我将最终输出更改为:
output = (pn.Row(widgets, get_plot).servable(), bins)
执行output[1]
显示图,但是output[2]
显示滑块控件,而不是所选的整数。
如果我将get_plot函数的输出更改为return (plot,bins)
,则最终绘图将显示小部件,并与print(plot)
相同,而不是直方图。
这是我用来开发我的代码的来源: https://panel.pyviz.org/gallery/simple/temperature_distribution.html#gallery-temperature-distribution
答案 0 :(得分:0)
您将bins
定义为小部件,因此很自然地显示了小部件。
根据您的情况,bins.value
可能是您想要的,遵循以下文档:https://panel.pyviz.org/user_guide/Widgets.html