Estoy usando el control deslizante del Panel para inspeccionar algunos datos y quiero usar los valores de este widget como argumento de otras funciones. Construí mi propio código basado en este:

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()

Poniendo mi pregunta en el contexto del código anterior, me gustaría usar el valor de los contenedores. Para hacer esto, cambié el resultado final a:

output = (pn.Row(widgets, get_plot).servable(), bins)

Hacer output[1] muestra la gráfica, pero output[2] muestra el control deslizante en lugar del entero elegido.

Si cambio la salida de la función get_plot a return (plot,bins), el gráfico final muestra el widget más lo mismo que do print(plot) en lugar del histograma.

Aquí está la fuente del código que solía desarrollar el mío: https://panel.pyviz.org/gallery/simple/ temperatura_distribución.html # galería-distribución de temperatura

0
lsdR94 27 jun. 2019 a las 21:37

1 respuesta

La mejor respuesta

Usted definió bins para ser el widget, por lo que naturalmente muestra el widget.

En su caso, bins.value es probablemente lo que está buscando, siguiendo los documentos aquí: https://panel.pyviz.org/user_guide/widgets.html

1
doppler 29 jun. 2019 a las 19:46