# Definiere eine Datenquelle source = ColumnDataSource(data=dict(x=x, y=y)) # Ein Plot-Objekt wird definiert plot = figure() # welches einen Linien-Plot beinhaltet plot.line('x', 'y', source=source) # Ein Schieberegler wird definiert freq = Slider(title="freq", value=1.0, start=1, end=105, step=0.1) # Diese Funktion soll gerufen werden, wenn der Schieberegler sich ändert .. def update_data(attrname, old, new): k = freq.value x = np.linspace(0, X_MAX, N) y = np.sin(k * x) source.data = dict(x=x, y=y) # .. was hier verdrahtet wird freq.on_change('value', update_data) # Hier wird eine Box im Browser erzeut, welche den Schieberegler enthält inputs = widgetbox(freq) # Diese Box wird zurück übergeben return row(inputs, plot, width=800) if __name__ == "__main__": curdoc.add_root(root())
plot = figure() plot.circle(x='x', y='y', source=source) slider = Slider(start=100, end=1000, value=N, step=10, title='Number of points') def callback(attr, old, new): N = slider.value source.data={'x' : random(N), 'y' : random(N)} slider.on_change('value', callback) layout = column(slider, plot) curdoc.add_root(layout) # Updating plots from dropdowns from bokeh.io import curdoc from bokeh.layouts import column from bokeh.models import ColumnDataSource, Select from bokeh.plotting import figure from numpy.random import random, normal, lognormal N = 1000 source = ColumnDataSource(data={'x' : random(N), 'y' : random(N)}) plot.figure() plot.circle(x='x', y='y', source=source)
def main(curdoc): curdoc.add_root(button_1) curdoc.add_root(button_2)