Agregue un control deslizante interactivo a los diagramas de Bokeh

Bokeh es una biblioteca interactiva de visualización de datos de Python. Se puede utilizar para crear gráficos interactivos, tableros y aplicaciones de datos. Los widgets no son más que elementos visuales adicionales que puede agregar a sus gráficos para controlar de forma interactiva su documento Bokeh. Hay varios tipos de widgets, como botón, div, control giratorio, control deslizante, etc. En este artículo, aprenderemos sobre el control deslizante en bokeh.

Control deslizante

El control deslizante Bokeh se puede configurar con valores iniciales y finales, un tamaño de paso, un valor inicial y un título. Básicamente, debe importar el widget Slider de bokeh.models.

Sintaxis:

de bokeh.models import CustomJS, Slider

La función Slider() se puede utilizar para crear un control deslizante.

Sintaxis:

Control deslizante (inicio = 0, fin = 10, valor = 1, paso = .1, título = «Cosas»)

Parámetro:

  • start : Representa el valor inicial de los controles deslizantes.
  • end : representa el valor final de los controles deslizantes.
  • value: Representa el valor actual del slider.
  • paso : Representa el intervalo por el que se mueve el deslizador.
  • title: Representa el título del control deslizante.

Ahora agregue la funcionalidad de devolución de llamada usando CustomJS, que se llama cuando ocurre el evento on_change.

Sintaxis:

js_on_change(“valor”, CustomJS(código=”””…. “””))

js_on_change es una función de devolución de llamada que se llama cuando se produce el evento slider on_change. y customJS(code=””” “””) representa el código que se ejecutará una vez que ocurra el evento. Ahora llame a la función de devolución de llamada usando el objeto deslizante y cree un diseño de todos los elementos que desea mostrar en el navegador.

Ejemplo: Crear un control deslizante usando bokeh

Python

from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Slider, CustomJS
from bokeh.plotting import figure, output_file, show
import numpy as np
  
x = np.linspace(0, 10, 500)
y = np.sin(x)
  
source = ColumnDataSource(data=dict(x=x, y=y))
  
# Create plots and widgets
plot = figure()
  
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.5)
  
# Create Slider object
slider = Slider(start=0, end=6, value=2,
                step=0.2, title='Number of points')
  
# Adding callback code
callback = CustomJS(args=dict(source=source, val=slider),
                    code="""
    const data = source.data;
    const freq = val.value;
    const x = data['x'];
    const y = data['y'];
   for (var i = 0; i < x.length; i++) {
        y[i] = Math.sin(freq*x[i]);
    }
      
    source.change.emit();
""")
  
slider.js_on_change('value', callback)
  
# Arrange plots and widgets in layouts
layout = column(slider, plot)
  
output_file('exam.html')
  
show(layout)

Producción:

Publicación traducida automáticamente

Artículo escrito por namaldesign y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *