I would like to create a visualization where there are two line graphs which are updated with one new point per line graph per second.
The result will be something like this.
I have recently read about bokeh and found out that it can be used in visualizing streams of data in real time. However don't know how to code in it yet.
I would appreciate it if someone can show me how this task can be done using bokeh. thanks!
Basically, you need to run you python app in the bokeh server. Then anyone can connect to the server and view the graph in realtime.
First, write your program. Use this code for example:
# myplot.py from bokeh.plotting import figure, curdoc from bokeh.driving import linear import random p = figure(plot_width=400, plot_height=400) r1 = p.line(, , color="firebrick", line_width=2) r2 = p.line(, , color="navy", line_width=2) ds1 = r1.data_source ds2 = r2.data_source @linear() def update(step): ds1.data['x'].append(step) ds1.data['y'].append(random.randint(0,100)) ds2.data['x'].append(step) ds2.data['y'].append(random.randint(0,100)) ds1.trigger('data', ds1.data, ds1.data) ds2.trigger('data', ds2.data, ds2.data) curdoc().add_root(p) # Add a periodic callback to be run every 500 milliseconds curdoc().add_periodic_callback(update, 500)
Then run the server from the command line, with your program:
C:\>bokeh serve --show myplot.py
This will open the browser with your realtime graph.
For all the details see the bokeh server documentation.