注意:我选择不支持同时绘制多个时间序列,尽管这只是这个的一个小扩展。
要使用所选数据点的索引确定要在另一个图中绘制的内容,需要:
-
放置相关数据(即
x,y,timeseries
在示例中)在一个或多个
ColumnDataSource
S;
-
我把要选择的数据和将在不同CD上更新的数据放在一起,因为我担心它可能会创建一个回调循环,尽管我没有测试过这个。
-
创建
列数据源
它将作为绘制时间序列的第二个图形的源;
-
例如,启用选择工具
TapTool
(
'tap'
;
-
添加一个
CustomJS
回拨到
列数据源
保存可选择的数据点;
-
用参数化该回调
列数据源
保存时间序列数据的;
-
对选定的数据点进行回调访问;
-
让回调对第二个数字进行必要的更改
列数据源
;
-
呼叫
cds_of_2nd_figure.change.emit()
在从回调返回之前。
要说明的代码:
cds = ColumnDataSource(data=dict(x=x,y=y,timeseries=timeseries))
cds2 = ColumnDataSource(x_to_plot=[],u_to_plot=[])
def selection_callback(d=cds,d2=cds2):
last_selected_ix = cb_obj.selected.indices[0]
timeserie = d.data['timeseries'][last_selected_ix]
x_to_plot = timeserie['x']
y_to_plot = timeserie['y']
d2.data['x_to_plot'] = x_to_plot
d2.data['y_to_plot'] = y_to_plot
d2.changes.emit()
# turn above function to js
selection_callback = CustomJS.from_py_func( selection_callback )
cds.callback = selection_callback
当某个数字从
cds
, the
timeseries[ix]
时间序列将绘制在绘制的图形上。
cds2
,在哪里
ix
是上一个选定数据点的索引
硫化镉
.
具有所有相关信息的相关资源:
https://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html#customjs-for-selections