问题描述
我正在尝试使用bokeh创建一个交互式地图,在该地图中,通过套索工具将一组特定的点括起来,可以生成包含某个变量的各种时间序列数据(例如,某个元素在时间上的集中度)的图表。代码的操作显示在image中。
我遇到的问题是,我只有一个基于封闭元素更新的数据源,而图表中只有一条关联的线,因此无法更改属性(颜色,标签,等),因为从理论上讲它只是一个。从这个意义上讲,“回调”目前要做的是获取套索所包围的点,并针对每个点选择数据x,y来生成图表并将其保存在使用的ColumnDataSource中对于图表的时间序列。我想正确的方法应该是为套索所包围的每个点生成一条线,但我还没有找到。
回调代码如下:
source.selected.js_on_change('indices',CustomJS(args=dict(source=source,data_source=data_source,s2=s2,source2=source2),code="""
//source: contains the data of the points
//data_source: contains the time series data from each point
//s2: save the name of the points selected
//source2: saves the time series data from each selected point
//Lasso event
var inds = cb_obj.indices;
var d1 = source.data;
var d2 = s2.data;
d2['nombre'] = []
for (var i = 0; i < inds.length; i++) {
d2['nombre'].push(d1['nombre'][inds[i]])
}
s2.change.emit();
//Chart event
var data = data_source.data;
var s_data = source2.data;
var letter = data['Pozo'];
var select_vals = s2.data['nombre'];
var x_data = data['Fecha'];
var y_data = data['Cota NE (msnm)'];
var x = s_data['x'];
x.length = 0;
var y = s_data['y'];
y.length = 0;
for (var i = 0; i < x_data.length; i++) {
if (select_vals.indexOf(letter[i]) >= 0) {
x.push(x_data[i]);
y.push(y_data[i]);
}
}
source2.change.emit();
"""))
plot = figure()
plot.line('x','y',line_width = 2,source = source2)
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)