bokeh,在回调中更改数据不会更改原始python数据

问题描述 投票:0回答:1

我正在使用一种手动分类工具,该工具可以更改散景图中散点图中选择的某些点(在我的情况下为颜色)的属性。我通过s.data = d2和s.change.emit()更改了回调中的源数据,但是都失败了。我以为这样的操作会更改source.data,但是当我打印source.data时,实际上什么也没发生。绘图中点的颜色会按预期变化。这是我的相关代码:

DF = pd.read_csv(csv_path)
s = ColumnDataSource(DF_file)
p = figure(plot_width=500, plot_height=500, tooltips=TOOLTIPS,tools="lasso_select, tap", title="manual classification")
circles = p.circle('x', 'y', color='color', size=10, source=s, line_alpha=0.6,fill_alpha=0.6)
s.callback = CustomJS(args=dict(s1=s), code="""
    var inds = cb_obj.selected.indices;
    var d1 = s1.data;

    for (var i = 0; i < inds.length; i++) 
    {d1['color'][inds[i]] = 'green';} 

    s1.change.emit();
""")

打印文件(s.data)和从s.to_csv(xxx)保存的csv文件均未显示对原始输入数据的更改。另外,我想知道当python中的数据是在args=(s1=s)中传递给它的数据时,回调如何工作以更改图的数据,同时使python中的数据保持不变。

我正在使用一种手动分类工具,该工具可以更改散景图中散点图中选择的某些点(在我的情况下为颜色)的属性。我通过s.data = d2和...

javascript python html data-visualization bokeh
1个回答
0
投票

我已经搜索了一些可能的方法,并在https://discourse.bokeh.org/t/getting-selected-glyph-data-properties-via-customjs/4311/5?u=1113中找到了此答案

© www.soinside.com 2019 - 2024. All rights reserved.