在交互式地图和图表上实现JavaScript回调散景

问题描述

我正在尝试使用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 (将#修改为@)