如何在具有bokeh后端的全息视图中控制(活动)工具

时间:2019-07-11 14:58:15

标签: python bokeh holoviews

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

对于一个特定的示例,假设我只想要悬停工具。我会尝试这样做:

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

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

plot with too many tools

类似地,如何指定所有活动工具的列表?例如

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

让我平移和悬停都活跃起来;我希望悬停是唯一的工具,但没有要激活的工具。

plot with too many active tools

2 个答案:

答案 0 :(得分:2)

对于第一个问题,请使用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])

答案 1 :(得分:0)

出于完整性考虑,目前可以使用以下工具:

  

box_edit,box_select,box_zoom,单击,十字线,帮助,悬停,   lasso_select,pan,point_draw,poly_draw,poly_edit,poly_select,   预览保存,重做,重置,保存,点击,撤消,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'])