在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
的结构是什么。
答案 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)