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

如何实现鼠标悬停显示Gnuplot 3D-mesh单元格数值

Gnuplot 3D网格图悬停显示单元格数值实现方案

Gnuplot原生支持鼠标拾取绘图元素的数值,不需要依赖外部工具,配置后即可实现悬停显示单元格第四维(颜色强度)数值的效果。

基础方案:状态栏显示悬停数值

这是最简单的实现方式,不需要额外写回调,只需要补全鼠标交互配置,调整绘图语句保证单元格可被拾取即可:

  • 开启鼠标悬停捕获
    补全鼠标配置,开启悬停事件,自定义提示内容的格式:
    set mouse hover
    # 自定义提示格式,依次输出x坐标、y坐标、z坐标、第四维强度值
    set format mouse "x=%.1f | y=%.1f | z=%.1f | 强度值=%.3f"
    
    配置后鼠标悬停在图上时,Gnuplot窗口底部状态栏会自动输出对应位置的数值,其中第四维的强度值就是你当前观察到的颜色映射对应原始值,存在内置变量MOUSE_COLOR里。
  • 调整绘图语句保证拾取精度
    你当前的代码只绘制了黑色网格线,没有显式绘制pm3d填色层,鼠标无法精准匹配到网格单元格,需要调整splot语句,将pm3d填色层放在下层,网格线放在上层,既保留原有视觉效果,又能让鼠标正常拾取单元格数据:
    # 注意:如果使用'-'内联数据,需要输入两次相同的数据块;建议将数据存为独立文本文件读取,避免重复输入
    splot '-' using 1:2:3:4 with pm3d notitle, \
          '-' using 1:2:3:4 notitle with lines lw .3 lc rgb 'black'
    
    额外加一行配置可以避免拾取到被曲面遮挡的背面单元格,匹配精度更高:
    set pm3d depthorder
    

进阶方案:光标旁弹出标签显示数值

如果不想看底部状态栏,想要数值直接跟随鼠标光标显示,可以通过绑定鼠标移动事件实现,新增配置如下:

# 初始化一个带边框的标签,用来显示悬停数值
set label 100 front boxed
# 绑定鼠标移动事件:实时更新标签位置和显示内容
bind MouseMove "if (exists('MOUSE_X')) { set label 100 at mouse sprintf('强度:%.3f', MOUSE_COLOR); replot }"
# 如果不需要底部状态栏提示,可以加下面这行关闭
# set mouse noverbose

完整配置参考

把原有代码和新增配置整合后,可直接使用的版本如下:

set cbrange [0.0:.2]
set palette defined (0 'white', 1 'midnight-blue')
set pm3d depthorder
set contour surface
set cntrparam levels incremental 0, 50, 1000
set xrange [0:1300]
set yrange [0:1500]
set zrange [0:1000]
set xyplane at 0
set view 9, 88, 2.3
set view equal xy

# 交互配置
set mouse hover
set format mouse "x=%.1f | y=%.1f | z=%.1f | 强度值=%.3f"
# 需弹出标签则解开下面两行注释
# set label 100 front boxed
# bind MouseMove "if (exists('MOUSE_X')) { set label 100 at mouse sprintf('强度:%.3f', MOUSE_COLOR); replot }"

# 绘图
splot '你的数据文件路径' using 1:2:3:4 with pm3d notitle, \
      '' using 1:2:3:4 notitle with lines lw .3 lc rgb 'black'

你当前设置的视角、坐标轴范围、等高线配置都不需要修改,不会影响悬停拾取的效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 20:36:27