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
相关产品推荐
相关产品推荐

