使用CustomJS选择Bokeh选择工具交互图

时间:2018-06-14 13:12:17

标签: javascript python plot bokeh

我有一个选择工具可以通过Bokeh服务器更新绘图和Pretext。我想在不使用散景服务器的情况下进行交互。解决方案是使用CustomJS绘制数据。

虚拟数据如下:

import pandas as pd
import random

list_type = ['All', 'Compliment', 'Sport', 'Remaining', 'Finance', 'Infrastructure', 'Complaint', 'Authority',
 'Danger', 'Health', 'English']



df = pd.concat([pd.DataFrame({'Subject' : [list_type[i] for t in range(110)], 
                   'Polarity' : [random.random() for t in range(110)],
                   'Subjectivity' : [random.random() for t in range(110)]}) for i in range(len(list_type))], axis=0)

我用于通过散景服务器进行绘图交互的代码如下:

options = []
options.append('All')

options.extend(df['Subject'].unique().tolist())
source = ColumnDataSource(df)

p = figure()
r = p.circle(x='Polarity', y='Subjectivity', source = source)

select = Select(title="Subject",  options=options, value="All")
output_notebook()

def update_plot(attr, old, new):
    if select.value=="All":
        df_filter = df.copy()
    else:
        df_filter = df[df['Subject']==select.value]
    source1 = ColumnDataSource(df_filter)
    r.data_source.data = source1.data
    stats.text = str(df_filter.describe())
select.on_change('value', update_plot)
layout = column(row(select, width=400), p)
#show(layout)
curdoc().add_root(layout)

我在bokeh网站上尝试了一些示例,但我找不到任何使用“选择”工具的示例。在javascript方面我有0经验。我尝试了以下将替换函数update_plot()

update = CustomJS(args=dict(source=source), code="""

var data = source.data;

var f = cb_obj.value;


if (f == 'All') {
    source.data = source.data;
    }
}
if (f == 'Compliment') {
    source_fill = source_bar.data;
    }
}

source.change.emit();
""")

select.js_on_change('value', update)

我知道这不是解决方案。除此之外,我希望交互在主题方面是动态的。我的JS示例是静态的,不起作用。

任何人都可以帮助我吗?

0 个答案:

没有答案