Python 如何让bokeh小部件与plot.on_change()交互

Python 如何让bokeh小部件与plot.on_change()交互,python,bokeh,Python,Bokeh,我正在尝试创建一个包含3行的图,数据框中的每列对应一行。我希望能够在小部件中选择可视化中显示的行。绘图随小部件一起出现,但在小部件中选择列不会影响可视化。我想我的错误是在我的更新功能,但我不知道如何让绘图更新 我解决了我自己的问题! src.data.update(新的src.data) 只更新行,不更改列。pd.melt(…)一开始也是如此,所以我想做的更新是行更新而不是列更新,现在我的程序按我想的方式运行。我代码中的错误是src.data.update(new_src.data)实际上没

我正在尝试创建一个包含3行的图,数据框中的每列对应一行。我希望能够在小部件中选择可视化中显示的行。绘图随小部件一起出现,但在小部件中选择列不会影响可视化。我想我的错误是在我的更新功能,但我不知道如何让绘图更新

我解决了我自己的问题!
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)