Streaming two line graphs using bokeh

可紊 提交于 2019-11-29 02:24:42
Elad Joseph

For bokeh-0.11.1:

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.

You can add scrolling to your graph by adding the following to the plot figure declaration:

p = figure(plot_width=400, plot_height=400)
p.x_range.follow="end"
p.x_range.follow_interval = 20
p.x_range.range_padding=0

where the follow_interval = the number of points that accumulate on the on the graph before it starts scrolling. I believe you can set the visible range on the chart, as well. FYI I got the scrolling code from the OHLC example on the bokeh GitHub page found here: https://github.com/bokeh/bokeh/tree/master/examples/app The OHLC is an example of streaming data using the "...= new_data" technique that bigreddot mentioned.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!