具有不同列长度的散景 "source"

Bokeh "source" with different columns length

我正在尝试使用散景在同一图表中绘制多个时间序列。有些系列的长度会与其他系列不同,但我想保留它们。

此时,我收到警告,告诉我源的所有列的长度都不相同,但 Bokeh 似乎会自动调整大小。

另一件重要的事情,我需要在 相同的来源 中拥有时间序列的所有 'Y' 值,因为我在 JS 中使用回调为了创建和交互情节。

回调为:

callback = CustomJS(args=dict(source=source), code="""
            // data contains the source.column_names keys
            var data = source.get('data');
            // f contains the name of the time series to be plotted
            var f = cb_obj.get('value');

            // For each key in the source, find the lines to be plotted
            for (i = 0; i < Object.keys(data).length; i++) {
                curr_key = Object.keys(data)[i];
                // 'line' identifier is used to recognise columns of sources which represent Y values
                if (curr_key.includes('line')) {
                    id_ = curr_key.split('_')[0];
                    associated_save = id_.concat('_save_y');
                    // If the time series is in the selected to be plotted, set the data to plot it
                    if (f.indexOf(curr_key) > -1) {
                        data[curr_key] = data[associated_save]
                    } else {   // else, fixe to nan to erase it
                        data[curr_key] = 'nan'
                    }
                }

            }

            source.trigger('change');
        """)

算法是循环遍历源的 column_names 以绘制/或取消绘制相应的时间序列。

我可以在此处提供来源列表吗args=dict(source=source)?我应该忽略警告,但是我的系列被删减了还是应该以其他方式处理它?

情节很好,但我正在尝试删除警告...

谢谢!

我主要看到两个选项:

  • 将数据重新采样到相同的长度,但这可能并不容易,并且在很大程度上取决于数据的属性。 (如果插值或下采样可行等)

  • 您可以将多个 line() (或任何字形)图添加到一个图中。意味着您将数据按相同的长度分组在多个数据框中。那么您的 Javascript 将需要进行一些重构。您可以迭代渲染器,这些渲染器是线,并且您有对相应源的引用。或者您可以在 javascript 中禁用渲染器(以隐藏情节)