如何使用散景后端控制全息视图中的(活动)工具

How to control (active) tools in holoviews with bokeh backend

如何使用 bokeh 后端控制在 holoviews 绘图中使用/激活哪些工具?我见过 this SO answer,但那只是 添加了 一个新的活动工具;它不会阻止任何其他工具(例如平移)处于活动状态。

举个具体的例子,假设我只想要悬停工具。我会尝试这样做:

import holoviews as hv
hv.extension("bokeh")
hv.Curve([1, 2, 3]).opts(tools=["hover"])

但后来我得到了一个图,其中除了 默认工具外还悬停了 。如何指定我要使用的 所有 工具的列表,以便不使用不在该列表中的工具?

同样,如何指定所有 个活动工具的列表?例如

import holoviews as hv
hv.extension("bokeh")
hv.Curve([1, 2, 3]).opts(tools=["hover"], active_tools=[])

让我同时启用平移和悬停;我希望悬停是唯一的工具,但没有工具可以激活。

对于第一个问题,请使用 default_tools 选项:

hv.Curve([1, 2, 3]).opts(tools=["hover"], default_tools=[])

对于第二个问题,holoviews中没有方法可以做到这一点,但是你可以直接将它设置为Figure对象:

def set_tools(plot, element):
    plot.state.toolbar.active_drag = None

hv.Curve([1, 2, 3]).opts(finalize_hooks=[set_tools])

为了完整起见,目前可以使用以下工具:

box_edit, box_select, box_zoom, click, crosshair, help, hover, lasso_select, pan, point_draw, poly_draw, poly_edit, poly_select, previewsave, redo, reset, save, tap, undo, wheel_zoom, xbox_select, xbox_zoom, xpan, xwheel_pan, xwheel_zoom, xzoom_in, xzoom_out, ybox_select, ybox_zoom, ypan, ywheel_pan, ywheel_zoom, yzoom_in, yzoom_out, zoom_in, zoom_out

您只需键入一个不存在的选项即可获得所有可能选项的列表。信息性错误消息将为您提供可供选择的选项列表。所以就这样做:

hv.Scatter(df).opts(tools=['nonsense'])