从散景交互式折线图中的ColumnDataSource中选择行

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

我被困住(特别是在CustomJS回调函数上),试图选择要在简单的散景线图中绘制的行。理想的结果是一条简单的线图,其中x轴为Date,y轴为Value。使用2个选择窗口小部件,我想选择CountryType

任何建议都值得欢迎!

到目前为止,我的代码:

import pandas as pd
import numpy as np
from bokeh.models.widgets import Select
from bokeh.models import ColumnDataSource, Select
from bokeh.io import show, output_notebook
from bokeh.plotting import figure

output_notebook()

df = pd.DataFrame({'Country': ['A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'],
                   'Date': ['01-01-2020', '01-02-2020', '01-03-2020', '01-01-2020', '01-02-2020', '01-03-2020', '01-01-2020', '01-02-2020', '01-03-2020', '01-01-2020', '01-02-2020', '01-03-2020'],
                   'Type': ['X', 'X', 'X', 'Y', 'Y', 'Y', 'X', 'X', 'X', 'Y', 'Y', 'Y'],
                   'Value': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]})

df['Date'] = pd.to_datetime(df['Date'])

source = ColumnDataSource(df)

callback = CustomJS(args=dict(source=source), code="""
    var data = source.data;
    var f = cb_obj.value
    var x = data['x']
    var y = data['y']
    source.change.emit();
""")

select_country = Select(title="Country:", value="A", options=np.unique(source.data['Country']).tolist())
select_country.js_on_change('value', callback)

select_type = Select(title="Type:", value="A", options=np.unique(source.data['Type']).tolist())
select_type.js_on_change('value', callback)

p = figure()
p.line(x='Date', y='Value', source=source)

layout = row(p, column(select_country, select_type))

show(layout)

由于我要部署HTML文件,因此无法使用Python编写回调。因此,我尝试使用CustomJS编写回调。但是我没有Java经验。

javascript python bokeh
1个回答
0
投票

只需将CDSViewGroupFilter一起使用,其group会被回调更改。不要更改数据源中的实际数据。

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