☰Read-only archive⌕
Looking for help with Bokeh?

This is a read-only archive. Ask questions and join the conversation on GitHub.

Visit Community Support on GitHub →
Archived discussions · Captured October 28, 2026

Question on filtering data with widget and showing on plot

Community Support
chovzmr
chovzmr

I’m trying to get the value from a slider and filter data based on that value and show the filtered data.

The way I’m doing it below is
-same data in both origin and source datasets
-plot first with origin
-filter data in source with a new value and update origin data
-continue

However, I can’t seem to be able to get it to work.
Please help…

x = np.linspace(0,10,10)
y = np.linspace(20,30,10)
z = [0,0,1,0,1,0,1,0,1,1]

origin = ColumnDataSource(data=dict(x = x, y = y, z = z))
source = ColumnDataSource(data=dict(x = x, y = y, z = z))

p = figure(plot_width=600, plot_height=400)
p.circle(‘x’, ‘y’, source=source, size=5, color=“navy”,alpha=0.5)

def callback(source=source, source2 = origin, origin = origin, window=None):
data = source2.data
r_data = source.data
data_dct_l = zip(r_data[‘x’], r_data[‘y’], r_data[‘z’])
f = cb_obj.value

filtered = [x for x in data_dct_l if x[2] == f]
for n, colname in enumerate('x y z'.split()):
    r_data[colname] = [i[n] for i in filtered]
   
r_data.trigger('change')    

sample_slider = Slider(start=0, end=1, value= 0, step=1,
title=“n”, callback=CustomJS.from_py_func(callback))

layout = column(sample_slider, p)
show(layout)

``

⌁   Link to post
Bryan
Bryan

I'm not actually sure from_py_func is smart enough to handle things like list comprehensions, zip, and enumerate. You'd have to look at the Flexx docs to be sure (the function is implemented using the Flexx package) or directly inspect the JS that gets created and put in your document to see if it is reasonable.

Thanks,

Bryan

···

On Jan 16, 2017, at 8:03 PM, chovzmr@gmail.com wrote:

I'm trying to get the value from a slider and filter data based on that value and show the filtered data.

The way I'm doing it below is
-same data in both origin and source datasets
-plot first with origin
-filter data in source with a new value and update origin data
-continue

However, I can't seem to be able to get it to work.
Please help...

x = np.linspace(0,10,10)
y = np.linspace(20,30,10)
z = [0,0,1,0,1,0,1,0,1,1]

origin = ColumnDataSource(data=dict(x = x, y = y, z = z))
source = ColumnDataSource(data=dict(x = x, y = y, z = z))

p = figure(plot_width=600, plot_height=400)
p.circle('x', 'y', source=source, size=5, color="navy",alpha=0.5)

def callback(source=source, source2 = origin, origin = origin, window=None):
    data = source2.data
    r_data = source.data
    data_dct_l = zip(r_data['x'], r_data['y'], r_data['z'])
    f = cb_obj.value

    filtered = [x for x in data_dct_l if x[2] == f]
    for n, colname in enumerate('x y z'.split()):
        r_data[colname] = [i[n] for i in filtered]
        
    r_data.trigger('change')
        
sample_slider = Slider(start=0, end=1, value= 0, step=1,
                       title="n", callback=CustomJS.from_py_func(callback))

layout = column(sample_slider, p)
show(layout)

--
You received this message because you are subscribed to the Google Groups "Bokeh Discussion - Public" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bokeh+unsubscribe@continuum.io.
To post to this group, send email to bokeh@continuum.io.
To view this discussion on the web visit https://groups.google.com/a/continuum.io/d/msgid/bokeh/11d2c7f7-f0fe-44dd-8334-3a506ff7d801%40continuum.io\.
For more options, visit https://groups.google.com/a/continuum.io/d/optout\.

⌁   Link to post

End of archived discussion · Replies are disabled