使用 DatePicker 小部件更新 ColumnDataSource

Updating ColumnDataSource using a DatePicker widget

我有一个 Bokeh 服务器应用程序,它使用 ColumnDataSource 和两个 DatePicker 小部件来绘制 vbar_stack 图。我想使用 DatePickers 值的范围来过滤绘图上显示的数据。 CDS 由以下数据框创建(索引由日期时间值组成):

                              Device1     Device2       Device3
    2020-10-24 H-m-S             0           1            2
    2020-10-25 H-m-S             1           0            1
    2020-10-25 H-m-S             2           0            0
    2020-10-25 H-m-S             0           2            0

我想按特定日期范围过滤数据,所以我制作了另一个数据框,仅包含我们从 DatePickers 设置的参数中找到的日期范围内的行(对于本例,开始范围 Datepicker 的值是 10/25/2020,所以 10/24 行被过滤掉了):

                                Device1     Device2     Device3
    2020-10-25 H-m-S             1           0            1
    2020-10-25 H-m-S             2           0            0
    2020-10-25 H-m-S             0           2            0

现在,我想在不影响原始数据帧的情况下将其传递给绘图。为此我想用 Source.data = ColumnDataSource.from_df(data.loc[start:end]).

然而,剧情只是一片空白,没有更新。 有没有什么具体的方法可以将这些数据传递给该地块已经使用的 CDS?我无法理解具体的格式。或者是否有我应该尝试的过滤此数据的不同方法?

我设法弄明白了——为了将该数据帧中的数据传递到我现有的数据源中,我必须制作一个新的 CDS 并将其更新为原始数据,如下所示:

new_source = ColumnDataSource(selected)
source.data.update(new_source.data) 

剧情正在更新中!