使用散景图中的TapTool设置图形范围

时间:2017-02-10 16:05:54

标签: python bokeh

在下面的例子中,我有两个散点图。预期的行为是:

  • 点击上图中的一个点时,下一个点放大到周围区域
  • 单击下图中的点时,下图放大到周围区域

我有第一个要运行的行为,但第二个行为似乎不起作用:x_range被重置以覆盖整个数据范围,忽略xrange.start=中的# test_data_a is a pandas dataframe containing columns "x" and "y" # test_data_b is a pandas dataframe containing columns "x" and "y" f1=figure(width=950, tools="xwheel_zoom,box_zoom,reset,tap", height=200) test_source1 = ColumnDataSource(data=dict(x=test_data_a.x, y=test_data_a.y)) test_source2 = ColumnDataSource(data=dict(x=test_data_b.x, z=test_data_b.z)) f1.circle("x", "y", fill_alpha=0.6, size=10, source=test_source1) f2=figure(width=950, tools="reset,tap") f2.circle("x", "z", fill_alpha=0.6, size=10, source=test_source2) cb_click_testtop = CustomJS(args=dict(ts1=test_source1, ts2=test_source2, xrange=f2.x_range, yrange=f2.y_range), code=""" index_selected=ts1.selected['1d'].indices[0] xmin=ts1.data['x'][index_selected]-0.5 xmax=ts1.data['x'][index_selected]+0.5 xrange.start=xmin xrange.end=xmax """) cb_click_testbot = CustomJS(args=dict(ts1=test_source1, ts2=test_source2, xrange=f2.x_range, yrange=f2.y_range), code=""" index_selected=ts2.selected['1d'].indices[0] xmin=ts2.data['x'][index_selected]-0.5 xmax=ts2.data['x'][index_selected]+0.5 xrange.start=xmin xrange.end=xmax """) f1.add_tools(TapTool(callback=cb_click_testtop)) f2.add_tools(TapTool(callback=cb_click_testbot)) both= gridplot([[f1], [f2]]) show(both) 分配回调。

STORE b INTO '/path/' USING PigStorage(',');

可以找到另一个(更简单的)示例here,即使只绘制1个绘图,也会出现同样的问题。

1 个答案:

答案 0 :(得分:0)

默认DataRange1d范围仅响应用户在初始设置时对startend所做的更改。随后,DataRange1d要么考虑初始值,要么总是自动范围(如果没有设置)。要对范围进行此类显式控制,请使用Range1d代替:

p=figure(x_range=(0,5))