如何让Holoviews叠加图中仅Points响应鼠标点击操作
解决QuadMesh与Points叠加时仅让散点响应点击的问题
现有代码通过Holoviews叠加了QuadMesh网格图和Points散点图,点击时网格单元和散点都会触发高亮效果,需求是仅保留散点的Tap点击响应。
解决方案核心
显式禁用QuadMesh的交互工具,让它不响应任何鼠标交互事件,只给Points保留Tap工具。
修改后的代码
import holoviews as hv import numpy as np import xarray as xr import pandas as pd hv.extension('bokeh') # 创建网格数据 grid_x = np.linspace(0, 5, 10) grid_y = np.linspace(0, 5, 10) grid_data = np.random.rand(len(grid_x), len(grid_y)) grid_data_da = xr.DataArray(grid_data, coords=[grid_x, grid_y], dims=['x', 'y'], name='data') # 创建散点数据 point_x = np.arange(5) point_y = np.arange(5) point_data = pd.DataFrame(data = {'x':point_x, 'y':point_y}) # 禁用网格的所有交互工具 grid_plot = hv.QuadMesh(grid_data_da).opts(tools=[], active_tools=[]) # 给散点设置Tap工具 point_plot = hv.Points(point_data, kdims=['x', 'y']).opts(size=12, tools=['tap']) grid_plot * point_plot
关键说明
- 给
QuadMesh的opts中传入tools=[],会清空它绑定的所有交互工具,包括默认的Tap响应;active_tools=[]确保没有激活的交互工具,彻底禁用网格的交互性。 - 叠加后只有
Points会响应Tap点击高亮,网格不会再触发任何点击交互效果。
内容的提问来源于stack exchange,提问作者hm8
相关产品推荐
相关产品推荐

