Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法通过回调清除多行图形_Python_Bokeh_Pandas Bokeh - Fatal编程技术网

Python 无法通过回调清除多行图形

Python 无法通过回调清除多行图形,python,bokeh,pandas-bokeh,Python,Bokeh,Pandas Bokeh,我有一个带有直线图的图形和另一个带有多直线图的图形。当用户从选择对象中选择新选项时,绘图将更新。 与ColumnDataSource同步时,线图将正确更新。但是,多线图从数据帧中提取信息。 问题是每次我选择新选项时,多线图上的线都会累积 我曾尝试在on_change回调函数中使用此函数,但无效: 在更改“值”时选择.js,CustomJSargs=dictplot=plot,code=plot.reset.emit 实际上,我应该在onchange回调中包含CustomJS,但是我得到了一个错误

我有一个带有直线图的图形和另一个带有多直线图的图形。当用户从选择对象中选择新选项时,绘图将更新。 与ColumnDataSource同步时,线图将正确更新。但是,多线图从数据帧中提取信息。 问题是每次我选择新选项时,多线图上的线都会累积

我曾尝试在on_change回调函数中使用此函数,但无效: 在更改“值”时选择.js,CustomJSargs=dictplot=plot,code=plot.reset.emit

实际上,我应该在onchange回调中包含CustomJS,但是我得到了一个错误。不知道怎么用

回调函数 def callbackattr,旧的,新的: selected=函数返回带有来自所选用户的数据的DF选择值,时间 source.data={'index':selected.index,'count':selected.count} 相似的\u时间\u用户=按\u时间获取\u顶部\u 5个\u邻居,选择.value 邻居=函数,\u返回\u DF\u和\u选中的\u用户\u邻居 numlines=lenneights.columns mypalette=Spectral11[0:numlines] plot.multi_linexs=[neights.index.values]*numlines, ys=[邻居[name]。邻居中的名称值,轴=1], line_color=mypalette, 线宽=1 策划 选择=选择标题=选择用户:,值=,选项=用户列表 plot=figurex\u axis\u label='一天中的时间',y\u axis\u label='count' plot.linex='index',y='count',source=source,线宽=5 plot.multi_linexs=[neights.index.values]*numlines, ys=[邻居[name]。邻居中的名称值,轴=1], line_color=mypalette, 线宽=1 选择。在更改“值”时,回调 在更改“值”时选择.js,CustomJSargs=dictplot=plot,code=plot.reset.emit 布局=行WidgetBoxSelect,打印 curdoc.add\u根布局 我希望有一个像第一个一样的绘图: 但是,这是我在多次选择后得到的结果:

有什么建议吗? 非常感谢! Raul.

调用glyph方法是加法。反复调用multi_line每次都会添加新的multi line,而不会删除以前添加的任何内容。对于这种用例,您应该改为调用multi_line或您可能只使用一次的任何glyph,然后稍后只更新数据源。例如:

source = ColumnDataSource(data=dict(xs=..., ys==...)
plot.multi_line(xs='xs', ys='ys', ..., source=source)

def callback(attr,old,new):
    source.data = new_data_dict