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

Plotly中禁用圆柱曲面悬停以获取内部散点信息

解决Plotly 3D圆柱曲面遮挡内部散点悬停的问题

直接给Surface轨迹设置hoverinfo='none'即可完全禁用其悬停响应,让鼠标事件穿透到内部散点。之前用hoverinfo='skip'无效是因为该参数仅隐藏悬停信息,但仍会捕获悬停事件,导致散点无法触发。

示例代码

import plotly.graph_objects as go
import numpy as np

# 生成圆柱曲面数据
theta = np.linspace(0, 2*np.pi, 100)
z = np.linspace(0, 5, 50)
theta_grid, z_grid = np.meshgrid(theta, z)
x = 2 * np.cos(theta_grid)
y = 2 * np.sin(theta_grid)

# 生成内部散点数据
np.random.seed(42)
scatter_z = np.random.uniform(0, 5, 20)
scatter_theta = np.random.uniform(0, 2*np.pi, 20)
scatter_x = 1 * np.cos(scatter_theta)
scatter_y = 1 * np.sin(scatter_theta)

fig = go.Figure()

# 添加圆柱曲面,禁用悬停
fig.add_trace(go.Surface(
    x=x, y=y, z=z_grid,
    hoverinfo='none',  # 核心参数:彻底禁用悬停响应
    opacity=0.3,  # 可选,半透明便于观察内部散点
    colorscale='Blues'
))

# 添加内部散点,保留正常悬停
fig.add_trace(go.Scatter3d(
    x=scatter_x, y=scatter_y, z=scatter_z,
    mode='markers',
    marker=dict(size=5, color='crimson'),
    hovertemplate='坐标:<br>X: %{x:.2f}<br>Y: %{y:.2f}<br>Z: %{z:.2f}'
))

fig.update_layout(scene=dict(aspectmode='data'))
fig.show()

额外优化(可选)

如果仍存在遮挡问题,可以给Surface添加layer='below'参数,强制将圆柱渲染在散点图层下方,进一步确保散点优先响应悬停:

fig.add_trace(go.Surface(
    # 其他参数不变
    layer='below'
))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 22:52:58