如何解决散景:滑块不会更新Hbar图上的结果
我编写了以下代码,使用滑块来过滤和更新bokeh中Hbar图上的值。 绘图(如图所示)可以正确输出,但是当我移动滑块时什么也没有发生。 非常感谢您的反馈。
import pandas as pd
from bokeh.core.properties import value
from IPython.display import display,HTML
from bokeh.plotting import figure,show
from bokeh.layouts import row,column,gridplot
from bokeh.io import output_notebook,save,curdoc
from bokeh.models import ColumnDataSource,HoverTool,DatetimeTickFormatter,FactorRange,DataTable,TableColumn,DateFormatter
from bokeh.models.widgets import Panel,Tabs,Slider
import matplotlib.pyplot as plt
xls=pd.ExcelFile(path)
test_data=pd.read_excel(xls,'test_data')
display(test_data)
AREA counts
A 500
B 100
C 70
D 50
E 40
F 20
G 10
H 2
def myplot(doc):
source = ColumnDataSource(pd.DataFrame(data=test_data))
area_list=source.data['AREA'].tolist()[::-1]
# Creating the Bar Chart
p = figure(y_range=area_list,plot_height=500,plot_width=500,title="Total counts per area",x_axis_label='counts',y_axis_label='AREA')
p.hbar(y='AREA',right='counts',height=1,line_color="black",fill_color='red',line_width=1,source=source)
def update_plot(attr,old,new):
Number_of_counts = slider.value
new_data = test_data.loc[test_data['counts'] >=Number_of_counts]
source = ColumnDataSource(data=new_data)
# Make a slider object: slider
slider = Slider(start=1,end=100,step=1,value=1,title='counts')
# Attach the callback to the 'value' property of slider
slider.on_change('value',update_plot)
doc.add_root(column(slider,p))
show(myplot)
解决方法
您要替换source
变量的值,但是旧的源仍然存在,所有创建的模型都在使用它。
而不是重新创建源,请尝试重新分配旧源的data
属性:
# source = ColumnDataSource(data=new_data)
source.data = ColumnDataSource.from_df(new_data)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。