2017-02-27 29 views
2

我使用散景(Python)绘制历史上众所周知的气候指标(例如厄尔尼诺)的时间序列。散景回调选择类似于用户选择的点

我的图表中的x轴是时间,特别是月/年。 y轴是指数的分析值。

内置于Bokeh中的Tap工具允许我在时间序列中选择一个点并使其突出显示。

我想完成的功能之一是有一个回调,将突出显示索引值等于我通过轻击工具选择的点的时间序列中的其他点。

这里我最大的问题是我根本不懂JavaScript(我只是一个Python-er),所以我想避免花费数小时学习JavaScript来编写5行回调函数。

任何人都有可能会做到这一点的建议或代码片段?

我真的很感激任何帮助。

+1

您正在寻找的术语是关联刷牙。 – Elliot

+0

真的吗?我似乎记得在文档或关于链接刷牙的事情上看到了一些东西,所以我会着眼于此。有助于拥有正确的术语。谢谢! – AvlWx

回答

0

据我所知,要从回调中选择点,您需要更新用于创建绘图的ColumnDataSource对象的selected属性,并且还将其作为参数传递给回调。如在:

from bokeh.models import ColumnDataSource, TapTool 
source = ColumnDataSource(data=dict(x=df.x, y=df.y)) 
p=figure(tools="reset,tap") 
p.circle("x", "y", source=source) 
cb_click = CustomJS(args=dict(source=source), code=""" 
    l_selected=source.selected 
    // create an array idx that contains the indices of the points you want to select 
    l_selected['1d'].indices=idx 
    source.selected=l_selected 
""") 
p.add_tools(TapTool(callback=cb_click)) 
p.show() 
+0

我很抱歉花了这么长时间回复!我要给这个镜头看看会发生什么。将报告回来,并接受答案,如果它的工作! – AvlWx