Я хочу добавить обратный вызов в мой виджет выбора bokeh, используя CustomJS. Мне нужно отфильтровать мой фрейм данных в соответствии с обратным вызовом из выбранного виджета.Поскольку я новичок в программировании на JavaScript, я не смог написать код для обратного вызова
true_source=ColumnDataSource(data={'a':df.loc[, 'MONTH_YR'],
'b':df.loc[, 'MCOUNT'],
'qty':df.loc[,'MPDCQTY'],
'value':df.loc[,'MQTYRATE'],
'section':df.loc['MSECTION']})
#I added the true_source so I could have a reference from my original dataframe while filtering
source=ColumnDataSource(data={'x':df.loc[df['MSECTION']=='TURRET','MONTH_YR'],
'y':df.loc[df['MSECTION']=='TURRET', 'MCOUNT'],
'qty':df.loc[df['MSECTION']=='TURRET','MPDCQTY'],
'value':df.loc[df['MSECTION']=='TURRET','MQTYRATE']})
def callback_select(attr, old, new):
s=section.value
new_data={'x':df.loc[df['MSECTION']==s, 'MONTH_YR'],
'y':df.loc[df['MSECTION']==s, 'MCOUNT'],
'qty':df.loc[df['MSECTION']==s,'MPDCQTY'],
'value':df.loc[df['MSECTION']==s,'MQTYRATE']}
source.data=new_data
Поскольку я хочу развернуть HTML-файл, написание обратного вызова в python не будет работать.Поэтому я попытался написать обратный вызов, используя CustomJS.Но я уверен, что я написал это неправильно.
callback=CustomJS(args=dict(source=source, ts=true_source), code=""""
var data1=ts.data;
var section=data1['section']
var a=data1['a']
var b=data1['b']
var data=source.data;
var f=cb_obj.value;
var x=[];
var y=[];
var j=0;
for(var i=0;i<section.length;i++){
if(section==f){
x[j].push(a[i]);
y[j].push(b[i]);
}
}
source.change.emit();
""")
это изображение здесь показывает сюжет, выберите опцию доцентная работа
Может кто-нибудь помочь мне с этим кодом JS?