Python 如何让bokeh小部件与plot.on_change()交互
我正在尝试创建一个包含3行的图,数据框中的每列对应一行。我希望能够在小部件中选择可视化中显示的行。绘图随小部件一起出现,但在小部件中选择列不会影响可视化。我想我的错误是在我的更新功能,但我不知道如何让绘图更新 我解决了我自己的问题!Python 如何让bokeh小部件与plot.on_change()交互,python,bokeh,Python,Bokeh,我正在尝试创建一个包含3行的图,数据框中的每列对应一行。我希望能够在小部件中选择可视化中显示的行。绘图随小部件一起出现,但在小部件中选择列不会影响可视化。我想我的错误是在我的更新功能,但我不知道如何让绘图更新 我解决了我自己的问题! src.data.update(新的src.data) 只更新行,不更改列。pd.melt(…)一开始也是如此,所以我想做的更新是行更新而不是列更新,现在我的程序按我想的方式运行。我代码中的错误是src.data.update(new_src.data)实际上没
src.data.update(新的src.data)
只更新行,不更改列。pd.melt(…)一开始也是如此,所以我想做的更新是行更新而不是列更新,现在我的程序按我想的方式运行。我代码中的错误是
src.data.update(new_src.data)
实际上没有更新我的数据源。我做错了什么?
# Load in flights and inspect
data = pd.read_csv('project_data.csv', index_col='DATE', parse_dates=True)
# These are the column names
available_people = ['merissa_steps', 'sherida_steps', 'tova_steps']
def modify_doc(doc):
def make_dataset(person_list):
by_person = data[person_list]
return ColumnDataSource(by_person)
def make_plot(src, people):
# Blank plot with correct labels
p = figure(x_axis_type="datetime", title="Everyone's Steps", plot_height=200, plot_width=500)
for person in people:
p.line(source = src, x = 'DATE', y = person, color='gray')
return p
# Update function takes three default parameters
def update(attr, old, new):
# Get the list of carriers for the graph
people_to_plot = [person_selection.labels[i] for i in
person_selection.active]
# Make a new dataset based on the selected carriers and the
# make_dataset function defined earlier
new_src = make_dataset(people_to_plot)
# Update the source used the quad glpyhs
src.data.update(new_src.data)
person_selection = CheckboxGroup(labels=available_people, active = [0, 1])
person_selection.on_change('active', update)
controls = WidgetBox(person_selection)
initial_people = [person_selection.labels[i] for i in person_selection.active]
src = make_dataset(initial_people)
p = make_plot(src, initial_people)
layout = row(controls, p)
doc.add_root(layout)
# Set up an application
handler = FunctionHandler(modify_doc)
app = Application(handler)