如何在散景中的回调中使用cb_obj?

时间:2015-06-18 11:31:20

标签: bokeh

bokeh.models.actions.Action中,有一个callback类用于用户定义的回调。它隐含地将当前plot_object作为cb_obj传递。

但是,我不知道如何从plot_object访问数据。

fig = figure()
fig.circle(x=[1,2,3], y=[4,5,6])
tap_tool.action = Callback(
    code="""
        alert('clicked')
        console.log(cb_obj)

    """)

如何访问信息,例如点击圈子的x,y?在模板字符串中,我们可以使用@variable$x来获取有关每个数据点的信息。

此外,在我看来,只有1 Circle Glyph,尽管有3个圆圈。所以字形与数据点的数量无关,是否正确?

cb_obj引用此Glyph或包含此字形的glyphRenderer吗?

here中,示例显示:

var inds = cb_obj.get('selected')['1d'].indices;
var d1 = cb_obj.get('data');

select, id, indices, data来自哪里? cb_obj的结构是什么。

2 个答案:

答案 0 :(得分:2)

从Bokeh 0.9.0开始,对于TapTool个动作,cb_obj的值是报告命中的字形的数据源。此示例显示如何访问数据列:

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction.html#callbacks-for-selections

答案 1 :(得分:1)

您实际上可以通过以下方式检查对象:

console.log(cb_data);
console.log(cb_obj);

例如,使用此回调来检查两个对象的内容:

scode = """
        console.log(cb_obj);
        console.log(cb_data);
        """
taptool.callback = CustomJS(args=dict(source=source),code = scode)

如果你在chrome中运行,你会在日志中看到cb_obj和cb_data的内容(View-Developer-Javascripts Console)