如何使用Bokeh Select小部件和JS回调按第三列Pandas列过滤散点图数据

时间:2018-12-11 00:28:12

标签: python bokeh

我试图通过散景中的下拉选择小部件从数据集中的另一列中选择一个值来过滤散点图中的数据。我有一个适用于Bokeh应用程序版本的代码集,但是我想使用JS回调使代码工作。我没有使用JavaScript的经验,也无法弄清楚如何从网络上的其他资源修改代码。

我的x轴值从我的数据框中的ptage列中提取。 我的y轴值是从数据框的ctdi列中提取的。 我想通过下拉选择小部件在数据框中使用名为station的另一列来过滤这些结果。

任何帮助将不胜感激!

# I am filtering my pandas dataframe by a date range inputed by user
df = pd.read_sql(queries, db, params=(begindate, enddate))

OUTPUT_FILE('filename.html')

source = ColumnDataSource(df)
# This gives a list of unique values I want to select from in the select widget
species=list (df['station'].unique())

menu = Select(options=species, title='Station Name')

def callback(attr, old,new):
    source_data=pd.DataFrame(source.data)
    new_data = source_data[source_data['station'] == menu.value]
    new_data_dict=dict (new_data)
    source.data=new_data_dict

p = figure()
p.circle(x='ptage', y='ctdi',
         source=source,
         size=10, color='green')

p.title.text = 'CTDI by age'
p.xaxis.axis_label = 'Age'
p.yaxis.axis_label = 'CTDI'

hover = HoverTool()
hover.tooltips=[
    ('date', '@day'),
    ('acc', '@acc'),
    ('station', '@station'),
    ('study', '@study')
]   

p.add_tools(hover)

menu.on_change('value', callback)

layout = column(menu, p)
curdoc().add_root(layout)
show(layout)

0 个答案:

没有答案