ci sono due casi d'uso:
senza server di
Se è possibile eseguire aggiornamenti in JS (non è necessario chiamare il codice python vero e proprio), quindi è molto facile per aggiungere interazioni usando CustomJS callbacks. Ci sono un sacco di esempi a quel link, ma un esempio di codice semplice di base assomiglia:
from bokeh.io import vform
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import Figure, output_file, show
output_file("callback.html")
x = [x*0.005 for x in range(0, 200)]
y = x
source = ColumnDataSource(data=dict(x=x, y=y))
plot = Figure(plot_width=400, plot_height=400)
plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6)
callback = CustomJS(args=dict(source=source), code="""
var data = source.get('data');
var f = cb_obj.get('value')
x = data['x']
y = data['y']
for (i = 0; i < x.length; i++) {
y[i] = Math.pow(x[i], f)
}
source.trigger('change');
""")
slider = Slider(start=0.1, end=4, value=1, step=.1,
title="power", callback=callback)
layout = vform(slider, plot)
show(layout)
che creerà un documento HTML indipendente con una trama Bokeh e un cursore, che aggiorna la trama in reazione al cursore, senza bisogno di un server (ad esempio, potresti inviarlo via email a qualcuno o servirlo su una pagina statica e funzionerebbe).
con il server
Se si desidera che il widget, interazioni, ecc per guidare codice Python effettivo (ad esempio scikit-learn, o Pandas) allora avete bisogno di utilizzare il server Bokeh. Fortunatamente il nuovo server dalla versione 0.11
è molto più robusto, performante, scalabile e semplice da usare. Si può vedere diverse applicazioni Bokeh schierate dal vivo (con link al loro codice sorgente) qui:
http://demo.bokehplots.com/
Oltre a una vasta documentazione su vari tipi di implementazioni nella documentazione qui:
http://bokeh.pydata.org/en/0.11.1/docs/user_guide/server.html
pura soluzione javascript per i grafici? qualcosa come d3.js? –
Speravo bokeh per creare il file .js dal mio codice Python a un livello superiore. Funziona già abbastanza bene con i miei grafici "più statici". – NublicPablo
Un'alternativa è usare il [BokehJS] (http: //bokeh.pydata.org/it/latest/docs/reference/bokehjs.html) e fare tutto nel client (basta passare i dati usando json). La documentazione è ancora in corso e non è molto facile da usare in questo momento, ma [semplici esempi] (http://jsfiddle.net/bokeh/9GhAp/) sono facili da trovare. – legaultmarc