首页 > 解决方案 > Bokeh CustomJS 回调以在滑块移动时更改 DataFrame 的行

问题描述

有时间试图弄清楚这一点:

有一个带有数据行的df。从 df 绘制几行,如下所示:

symchart.line(proj_dates, proj_i10, color = "purple", line_width = 2)
symchart.line(proj_dates, proj_ZL, color = "red", line_width = 1)
z0_renderer = symchart.line(proj_dates, proj_Z0, color = "navy", line_width = 1)
symchart.line(proj_dates, proj_ZL, color = "red", line_width = 1)
symchart.line(proj_dates, proj_i90, color = "purple", line_width = 2)

每一行的数据来自以下:

proj_i10 = interval_df.iloc[1,2:]
proj_ZL = interval_df.iloc[2,2:]
proj_Z0 = interval_df.iloc[3,2:]
proj_ZU = interval_df.iloc[4,2:]
proj_i90 = interval_df.iloc[5,2:]
proj_dates = interval_df.iloc[0,2:]

目标是移动滑块并让每个线图从 df 更改它使用的行。所以滑块值 = 1 保留了上面的图。对于滑块的每次移动,绘图每个移动 5 行,因此滑块值 = 2 然后每个线图在 df 中向下跳过 5 行并重绘绘图。滑块值停止在 31。

这是没有滑块的输出示例

数据的 df 示例

标签: javascriptpythonpandasbokehstock

解决方案


无法更改DataFrame自身,因为它是 Python 构造并CustomJS在 JavaScript 中运行。但是仍然可以通过使用视图和过滤器并避免更改整个数据来实现您想要的行为。有一个关于它的文档部分:https ://docs.bokeh.org/en/latest/docs/user_guide/data.html#filtering-data


推荐阅读