Ich habe das folgende Beispiel für Echtzeit-Streaming in Bokeh 0.10.0 von reddit Thread.Migrations-Code von Bokeh 0.10.0 zu 0.11.0
import time
from random import shuffle
from bokeh.plotting import figure, output_server, cursession, show
# prepare output to server
output_server("animated_line")
p = figure(plot_width=400, plot_height=400)
p.line([1, 2, 3, 4, 5], [6, 7, 2, 4, 5], name='ex_line')
show(p)
# create some simple animation..
# first get our figure example data source
renderer = p.select(dict(name="ex_line"))
ds = renderer[0].data_source
while True:
# Update y data of the source object
shuffle(ds.data["y"])
# store the updated source on the server
cursession().store_objects(ds)
time.sleep(0.5)
Ich weiß, dass es keine Verwerfung von 0.11.0 Version gibt. Wie wäre der Code in Bokeh 0.11.0? Hier ist mein Versuch es. Fehle ich etwas? Grundsätzlich möchte ich, dass der unten stehende Code eine App ausführt, sodass ich, wenn ich Live-Streaming-Daten zur Verfügung stelle, die Quelle aktualisieren und sie in Echtzeit grafisch darstellen kann.
from bokeh.models import ColumnDataSource, HoverTool, HBox, VBoxForm
from bokeh.plotting import Figure, output_file, save
from bokeh.embed import file_html
from bokeh.models import DatetimeTickFormatter, HoverTool, PreText
from bokeh.io import curdoc
from bokeh.palettes import OrRd9, Greens9
plot = Figure(logo=None, plot_height=400, plot_width=700, title="",
tools=["resize,crosshair"])
source = ColumnDataSource(data=dict(x=[], y=[]))
plot.line([1,2,3], [10,20,30], source=source, legend='Price', line_width=1, line_color=OrRd9[0])
curdoc().add_root(HBox(plot, width=1100))
Ich versuche, den Parameter "Schritt" zu verstehen. Enthält es den Wert '500', den wir in' add_periodic_callback' übergeben? Wenn ich diese Variable 'step' nirgendwo in meiner Update-Funktion verwende, gibt es den folgenden Fehler 'ERROR: bokeh.util.tornado: Fehler beim periodischen Callback: TypeError ('update() benötigt genau 1 Argument (0 gegeben) ',) ' – Veenit
Entschuldigung, das war ein Copy-Paste-Fehler. Es gibt einige Dekoratoren, die den Callbacks bei jedem Aufruf automatisch Werte vom Typ "count" zur Verfügung stellen können, aber für die grundlegende Verwendung nehmen die Callbacks keine Parameter an. Ich habe die Antwort entsprechend aktualisiert. – bigreddot