没有模块命名对象[散景]

时间:2016-03-08 00:33:54

标签: python linux bokeh

我正在尝试运行此脚本:

#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

4 个答案:

答案 0 :(得分:2)

在尝试示例之前,您是否尝试安装bokeh?如果没有,请运行:

pip install bokeh

再次尝试使用您的脚本。

如果它不起作用,bokeh来源可能会发生变化,因此您可能想要更改

from bokeh.objects import GlyphRenderer

from bokeh.models.renderers import GlyphRenderer

cf the source code

在您的示例的第一行,它指出:

#Code will be significantly simplified in the 0.4 release

这意味着在编写教程时,示例的代码已经不在使用。

因此,您应该尝试了解其工作原理,并使用文档和资源重新创建代码,而不是复制/粘贴代码:

玩得开心!

答案 1 :(得分:2)

commit 5b5d28304c5ea209e243af5943917fe494d9ef9cv0.7.1)中弃用后,objects模块已在8bb4a2f1f43b39b869c508ef7aee69f7aabb46b8v0.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应用程序就是一个完整的例子。