我在散景图中的一列中有多个图形。我想同时对所有图像应用相同的工具变换,即,如果我缩放一个图形,则所有图应缩放,如果平移一个,则它们都应平移,如果重置一个,则都应重置(不必太在乎悬停,我会欣喜若狂地缩放,平移和重置)。
是否有一种散景的方式链接人物,或者我需要一些自定义Javascript(如果是的话)?
提前致谢。
编辑:
感谢@bigreddot和@Abhinav提供的解决方案。您需要两个答案,如下所述:Linking Plots。该范围有助于平移,而同一数据源则有助于缩放,
从布局示例修改的解决方案:
from bokeh.io import output_file, show
from bokeh.layouts import column
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource
from bokeh.models import PanTool,ResetTool,BoxZoomTool
output_file("layout.html")
x = list(range(11))
y0 = x
y1 = [10 - i for i in x]
y2 = [abs(i - 5) for i in x]
tools=[BoxZoomTool(), PanTool(), ResetTool()]
datasource = ColumnDataSource({'x': x, 'y0': y0, 'y1': y1, 'y2': y2})
# create a new plot
s1 = figure(plot_width=250, plot_height=250, title=None,tools=tools)
s1.circle('x', 'y0', size=10, color="navy", alpha=0.5, source=datasource)
# create another one
s2 = figure(plot_width=250, plot_height=250, title=None,tools=tools,x_range=s1.x_range,y_range=s1.y_range)
s2.triangle('x', 'y1', size=10, color="firebrick", alpha=0.5, source=datasource)
# create and another
s3 = figure(plot_width=250, plot_height=250, title=None,tools=tools,x_range=s1.x_range,y_range=s1.y_range)
s3.square('x', 'y2', size=10, color="olive", alpha=0.5, source=datasource)
# put the results in a column and show
show(column(s1, s2, s3))
最佳答案
在文档的Linking Plots下。
TLDR:如果要让图共享范围,则共享其实际范围对象:
# create a new plot
s1 = figure()
s1.circle(x, y0, size=10, color="navy", alpha=0.5)
# create a new plot and share both ranges
s2 = figure(x_range=s1.x_range, y_range=s1.y_range)
s2.triangle(x, y1, size=10, color="firebrick", alpha=0.5)