使用散景流两个线图

jti*_*usj 6 python data-visualization bokeh

我想创建一个可视化,其中有两个线图,每秒更新每个线图一个新点.结果将是这样的.

我最近阅读了有关散景的内容,发现它可以用于实时显示数据流.但是不知道如何在其中编码.

如果有人能告诉我如何使用散景完成这项任务,我将不胜感激.谢谢!

Ela*_*eph 14

用于bokeh-0.11.1:

基本上,你需要在散景服务器中运行python应用程序.然后任何人都可以连接到服务器并实时查看图表.

首先,编写你的程序.使用此代码示例:

# 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)
Run Code Online (Sandbox Code Playgroud)

然后使用您的程序从命令行运行服务器:

C:\>bokeh serve --show myplot.py
Run Code Online (Sandbox Code Playgroud)

这将使用您的实时图表打开浏览器.

有关所有详细信息,请参阅散景服务器文档.

  • 出于相当迟钝的技术原因,通常最好立即更新整个`.data`属性,即`ds.data = new_data`,如果可以的话.此外,如果您这样做,则不需要`trigger`调用,Bokeh服务器将自动获取对整个属性的更改. (4认同)

小智 6

您可以通过在绘图图声明中添加以下内容来向图形添加滚动:

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
Run Code Online (Sandbox Code Playgroud)

其中follow_interval =在开始滚动之前在图上累积的点数。我相信您也可以在图表上设置可见范围。仅供参考,我在bokeh GitHub页面上的OHLC示例中获得了滚动代码:https : //github.com/bokeh/bokeh/tree/master/examples/app OHLC是使用“。”流数据的示例。 。= new_data” bigreddot提到的技术。