Ab Release 0.12
ist dies immer noch ein bisschen klobig zu erreichen, aber nicht unmöglich. Es gibt eine "mouseup"
Richtlinie für Schieberegler, aber dies gilt derzeit nur für CustomJS
Rückrufe. Wenn Sie jedoch, dass mit einer „falschen“ Datenquelle kombiniert wird, können wir kommunizieren und nur den letzten Wert auslösen:
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.plotting import figure
from bokeh.models.callbacks import CustomJS
from bokeh.models.sources import ColumnDataSource
from bokeh.models.widgets import Slider
# this is the real callback that we want to happen on slider mouseup
def cb(attr, old, new):
print("UPDATE", source.data['value'])
# This data source is just used to communicate/trigger the real callback
source = ColumnDataSource(data=dict(value=[]))
source.on_change('data', cb)
# a figure, just for example
p = figure(x_range=(0,1), y_range=(0,1))
# add a slider with a CustomJS callback and a mouseup policy to update the source
slider = Slider(start=1, end=10, value=1, step=0.1, callback_policy='mouseup')
slider.callback = CustomJS(args=dict(source=source), code="""
source.data = { value: [cb_obj.value] }
""")
curdoc().add_root(column(slider, p))
# make sure to add the source explicitly
curdoc().add_root(source)
Wie gesagt, das ist nicht ideal. Es gibt einige offene Feature-Anfragen, die diese Situation in Zukunft verbessern könnten. Allerdings ist das Team ziemlich klein, also wenn Sie die Möglichkeit haben, einen Beitrag zu leisten, zögern Sie bitte nicht, zu erreichen (nur neue Mitarbeiter können helfen, die Entwicklung neuer Funktionen zu beschleunigen)
Danke für den Vorschlag. Wie wäre es, einen Worker-Thread zu erstellen, der die Graphen entsprechend dem zuletzt berichteten Wert aktualisiert? Oder würde das Thread-Sicherheitsprobleme einführen? Kann ich in diesem Fall einen Wiederholungstimer einrichten, mit dem ich die Grafiken aktualisieren kann? (nur einige Gedanken, weil ich länger andauernde Aufgaben vorhersehe, die nicht nur durch Aktualisierungen des Schiebereglers verursacht werden) – Emile
Dies könnte wahrscheinlich funktionieren, aber Sie müssen die Abschnitte zum Benutzerhandbuch in [Aktualisieren von Threads] (http: // bokeh) lesen .pydata.org/de/0.12.0/docs/user_guide/server.html # updating-from-threads) – bigreddot
Wurde dieses Problem in Bokeh 12.6 gelöst? – Thornhale