Python Bokeh: 按钮回调函数后,刷新我的身材
Python Bokeh: after the button callback function, refreshing my figure
你能帮我刷新一下我的身材吗?我在回调函数中添加了新的 "p" 变量来重置我的数字,但它不起作用。它只是给我看一个空的数字。每次我按下按钮,它都会将新图重叠在旧图之上。我尝试使用 reset.emit() 方法,但它说 'Figure' object 没有属性 'rest'。我也想在图中添加标题,但它包含一个变量。 item_input,但我不知道从哪里开始...
散景服务器版本 2.0.2
Python 3.8.1
龙卷风 6.0.3
from pandas import read_csv
from pandas import to_datetime
from bokeh.layouts import column
from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource, HoverTool, Title, TextInput, Button
source_data = 'somewhere'
def call_back():
try:
item_input = item.value
df = read_csv(source_data)
df1 = df[df['item'] == int(item_input)]
title = str(item_input) + ' ' + df1.iloc[0]['name']
source = ColumnDataSource(data=dict(
system_qty = df1['system_qty'],
man_date = to_datetime(df1['man_date']),
))
p.circle(
x='man_date', y='system_qty'
)
hover = HoverTool(
tooltips = [
("Manufacturing Date", "@man_date{%Y-%m-%d}"),
("Reserved Qty", "@reserved_qty"),
],
formatters = {
'@man_date': 'datetime'
},
)
p.add_tools(hover)
p.add_layout(Title(text="Manufacturing Date", align="center"), "below")
p.add_layout(Title(text="Quantity", align="center"), "left")
except ValueError:
raise
p = figure(x_axis_type='datetime')
item = TextInput(value='', title="Item:")
button = Button(label='Submit')
button.on_click(call_back)
curdoc().add_root(column(item, button, p))
只调用一次p
的方法,不要在回调中调用它们。此外,一般来说,您还应该只创建一次 Bokeh 模型实例,尤其是 ColumnDataSource
。创建一次,然后在回调中重新分配其 data
属性。
你能帮我刷新一下我的身材吗?我在回调函数中添加了新的 "p" 变量来重置我的数字,但它不起作用。它只是给我看一个空的数字。每次我按下按钮,它都会将新图重叠在旧图之上。我尝试使用 reset.emit() 方法,但它说 'Figure' object 没有属性 'rest'。我也想在图中添加标题,但它包含一个变量。 item_input,但我不知道从哪里开始...
散景服务器版本 2.0.2 Python 3.8.1 龙卷风 6.0.3
from pandas import read_csv
from pandas import to_datetime
from bokeh.layouts import column
from bokeh.plotting import figure, curdoc
from bokeh.models import ColumnDataSource, HoverTool, Title, TextInput, Button
source_data = 'somewhere'
def call_back():
try:
item_input = item.value
df = read_csv(source_data)
df1 = df[df['item'] == int(item_input)]
title = str(item_input) + ' ' + df1.iloc[0]['name']
source = ColumnDataSource(data=dict(
system_qty = df1['system_qty'],
man_date = to_datetime(df1['man_date']),
))
p.circle(
x='man_date', y='system_qty'
)
hover = HoverTool(
tooltips = [
("Manufacturing Date", "@man_date{%Y-%m-%d}"),
("Reserved Qty", "@reserved_qty"),
],
formatters = {
'@man_date': 'datetime'
},
)
p.add_tools(hover)
p.add_layout(Title(text="Manufacturing Date", align="center"), "below")
p.add_layout(Title(text="Quantity", align="center"), "left")
except ValueError:
raise
p = figure(x_axis_type='datetime')
item = TextInput(value='', title="Item:")
button = Button(label='Submit')
button.on_click(call_back)
curdoc().add_root(column(item, button, p))
只调用一次p
的方法,不要在回调中调用它们。此外,一般来说,您还应该只创建一次 Bokeh 模型实例,尤其是 ColumnDataSource
。创建一次,然后在回调中重新分配其 data
属性。