将代码从Bokeh 0.10.0迁移到0.11.0

时间:2016-05-12 15:23:21

标签: python migration bokeh

我在reddit thread中的Bokeh 0.10.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)

我知道0.11.0版本没有版画。 Bokeh 0.11.0中的代码是什么样的?这是我的尝试。我错过了什么吗?基本上,我想要下面的代码做的是作为一个应用程序运行,这样当我提供实时流数据时,我可以更新源并实时绘制它。

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))

1 个答案:

答案 0 :(得分:1)

您可能想要添加定期回调,例如:

line

但实际上您还需要将数据放入列数据源,并告诉figure您要使用的列,而不是将列表文字传递给source = ColumnDataSource(data=dict(x=[1,2,3], y=[10,20,30])) plot.line('x', 'y', source=source, legend='Price', line_width=1, line_color=OrRd9[0])

{{1}}