You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Holoviews(Bokeh后端)叠加图工具控制的更优实现问询

简便控制Holoviews(Bokeh后端)叠加图的工具栏配置

不用逐个给子图和叠加层重复加工具配置,有两种更高效的实现方式:

方式一:全局默认配置

通过hv.opts.defaults()一次性设定所有同类型图表的工具规则,后续创建的子图会自动继承该配置,叠加后无需额外设置。

示例代码:

import holoviews as hv
hv.extension('bokeh')

# 给所有Curve、Scatter(按需添加你用到的图表类型)统一设置工具
hv.opts.defaults(
    hv.opts.Curve(
        tools=['fullscreen', 'crosshair', 'reset'],
        default_tools=["box_zoom"]
    ),
    hv.opts.Scatter(
        tools=['fullscreen', 'crosshair', 'reset'],
        default_tools=["box_zoom"]
    )
)

# 创建子图并直接叠加
curve = hv.Curve([1,2,3])
scatter = hv.Scatter([1,2,3])
overlay = curve * scatter
overlay

方式二:批量给子图应用配置

如果不想全局修改所有图表,可先定义好工具配置,再批量给需要叠加的子图应用,最后叠加即可。

示例代码:

import holoviews as hv
hv.extension('bokeh')

# 定义统一的工具配置
target_tool_opts = hv.opts.Options(
    tools=['fullscreen', 'crosshair', 'reset'],
    default_tools=["box_zoom"]
)

# 创建子图
curve = hv.Curve([1,2,3])
scatter = hv.Scatter([1,2,3])

# 批量应用配置
curve = curve.opts(target_tool_opts)
scatter = scatter.opts(target_tool_opts)

# 叠加生成最终图表
overlay = curve * scatter
overlay

原理说明

Holoviews叠加图的工具栏是合并所有子图的工具集生成的,只要所有子图的工具配置完全一致,叠加后就会得到你想要的工具栏,无需再单独给叠加层重复设置。上面两种方法本质都是确保所有子图共用同一工具配置,避免逐个手动重复设置的麻烦。

内容的提问来源于stack exchange,提问作者stublu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 08:05:02