我正在尝试运行此脚本:
#Code will be significantly simplified in the 0.4 release
import time
from bokeh.objects import GlyphRenderer
renderer = [r for r in curplot().renderers if isinstance(r, GlyphRenderer)][0]
ds = renderer.data_source
while True:
df = pd.io.json.read_json(url+json_call)
ds.data["x"] = x+N*i
ds.data["y"] = df.rssi
ds._dirty = True
session().store_obj(ds)
time.sleep(1.5)
i+=1
自: https://www.continuum.io/content/painless-streaming-plots-bokeh
但是在这一行:
from bokeh.objects import GlyphRenderer
我得到了:
No module named objects
我正在使用的版本是
0.11.1
关于linux mint 17.1
答案 0 :(得分:2)
在尝试示例之前,您是否尝试安装bokeh
?如果没有,请运行:
pip install bokeh
再次尝试使用您的脚本。
如果它不起作用,bokeh
来源可能会发生变化,因此您可能想要更改
from bokeh.objects import GlyphRenderer
到
from bokeh.models.renderers import GlyphRenderer
在您的示例的第一行,它指出:
#Code will be significantly simplified in the 0.4 release
这意味着在编写教程时,示例的代码已经不在使用。
因此,您应该尝试了解其工作原理,并使用文档和资源重新创建代码,而不是复制/粘贴代码:
玩得开心!
答案 1 :(得分:2)
在commit 5b5d28304c5ea209e243af5943917fe494d9ef9c
(v0.7.1)中弃用后,objects
模块已在8bb4a2f1f43b39b869c508ef7aee69f7aabb46b8
(v0.7.0)中删除。弃用消息显示为“use bokeh.models instead
”。我将GlyphRenderer
留在当前代码库中作为练习。
答案 2 :(得分:0)
conda update bokeh
为我解决了这个问题。
答案 3 :(得分:0)
关于流媒体(因为这是OP感兴趣的例子),这里演示了当前和稳定的流API:
https://github.com/bokeh/bokeh/tree/master/examples/app/ohlc
这个简单的界面一直是从0.11.1
开始有效地流式传输数据的方式,并将继续向前发展。
基本思想是构建一个包含数据源所有列的dict
,并且只构建要附加的 new 数据:
# construct a source with x and y columns
source = ColumnDataSource(data=dict(x=[....], y=[....]))
# sends the few new data points to the client, does not re-send all the data
source.stream(dict(x=[10, 11], y=[20, 21]))
通常,您可能会从某种定期回调中调用流。上面链接的OHLC应用程序就是一个完整的例子。