嵌入为组件时如何在散景图中实现链接缩放和平移
How to Implement linked zooming, panning in bokeh plots when embedded as Components
我有一个 django 网络应用程序,我们在其中渲染多个散景图(时间序列)以提高可用性,要求所有图的 x 轴在所有图(时间)之间链接。我有以下与 bokeh-1.10.0
一起使用的解决方案(伪代码)
plot_1 = figure()
plot_1.line([0,1,2],[1,2,3])
plot_2 = figure()
plot_2.line([0,1,2],[1,3,9])
plot2.x_range = plot_1.x_range # This line causes the linking
script1, div1 = components(plot_1)
script2, div2 = components(plot_2)
然后将 div1、div2 和脚本嵌入到 django 模板中。 Bokeh-js 发挥了神奇作用,因此当 plot_1 缩放时 plot_2 会同时缩放。由于 x_range 个对象具有相同的 ID。
但是对于 bokeh-0.12.1,似乎 bokeh js 第二个图不受第一个图上缩放事件的影响,反之亦然。
如何在类似的嵌入设置中实现链接平移和缩放?
在较新版本的 Bokeh 中(可能自 0.11
起),components
函数可以一次接受多个绘图,对于这个用例来说,这实际上是必要的。原因是对 components
return 脚本的不同调用使用不同的 不同 Document
对象。但是,如果您打算以任何方式链接对象,则这些对象都必须在 same Document
中。所以在你的情况下,是这样的:
components((p1, p2))
# returns (script, (div1, div2))
就是你想要的。获得 returned 的单个脚本将替换两个 returned 的 div。
还有其他调用 components
的方法(例如,使用 dict
绘图等)。请参阅 project documentation 了解更多信息。
我有一个 django 网络应用程序,我们在其中渲染多个散景图(时间序列)以提高可用性,要求所有图的 x 轴在所有图(时间)之间链接。我有以下与 bokeh-1.10.0
一起使用的解决方案(伪代码)plot_1 = figure()
plot_1.line([0,1,2],[1,2,3])
plot_2 = figure()
plot_2.line([0,1,2],[1,3,9])
plot2.x_range = plot_1.x_range # This line causes the linking
script1, div1 = components(plot_1)
script2, div2 = components(plot_2)
然后将 div1、div2 和脚本嵌入到 django 模板中。 Bokeh-js 发挥了神奇作用,因此当 plot_1 缩放时 plot_2 会同时缩放。由于 x_range 个对象具有相同的 ID。
但是对于 bokeh-0.12.1,似乎 bokeh js 第二个图不受第一个图上缩放事件的影响,反之亦然。
如何在类似的嵌入设置中实现链接平移和缩放?
在较新版本的 Bokeh 中(可能自 0.11
起),components
函数可以一次接受多个绘图,对于这个用例来说,这实际上是必要的。原因是对 components
return 脚本的不同调用使用不同的 不同 Document
对象。但是,如果您打算以任何方式链接对象,则这些对象都必须在 same Document
中。所以在你的情况下,是这样的:
components((p1, p2))
# returns (script, (div1, div2))
就是你想要的。获得 returned 的单个脚本将替换两个 returned 的 div。
还有其他调用 components
的方法(例如,使用 dict
绘图等)。请参阅 project documentation 了解更多信息。