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

gnuplot中如何在3D热力图上绘制固定z值填充区域

Gnuplot 3D热力图叠加固定Z高度填充区域实现方法

splot 模式下原生filledcurve默认逻辑是将数据点与z=0基准面连接绘制竖线,这也是执行splot 'data' u 1:2:(1) w filledcurve后只出现沿z轴线条的原因,不会直接生成平面内填充效果。以下两种方法可实现需求:

方法一:全版本兼容方案(适配所有gnuplot版本,稳定性最高)

核心思路是先在2D模式下生成填充多边形的顶点数据,再映射到指定z高度用多边形绘制:

  • 第一步预处理填充轮廓数据:示例给出的轮廓数据首尾点不闭合(最后一个点坐标为139.62999 0.31216,与第一个点118.01363 0.31794不重合),在数据文件末尾追加一行第一点的坐标,保证填充轮廓闭合无缺口。
  • 第二步导出2D填充多边形顶点到临时文件,执行以下命令:
set table 'fill_poly_tmp.dat'
plot 'your_contour.dat' w filledcurve
unset table
  • 第三步回到3D pm3d绘图模式,将导出的多边形顶点固定到目标z高度,叠加在热力图上层即可,示例代码:
set pm3d
# 调整层级保证填充区域显示在热力图上方
set pm3d depthorder
splot 'your_3d_heatmap.dat' w pm3d, \
      'fill_poly_tmp.dat' u 1:2:(1) w polygons fc rgb "#80FF0000" fs solid 0.5 t "标记区域"
  • fs solid 0.5 用于设置填充透明度为50%,避免完全遮挡下层热力图,可根据需求调整数值
  • fc rgb "#80FF0000" 为填充颜色设置,可自定义色值
  • 若填充区域仍被热力图遮挡,可在多边形绘制参数后加front关键字强制置顶

方法二:高版本简便方案(gnuplot 5.4及以上版本可用)

gnuplot 5.4版本开始为3D模式下的filledcurves新增了固定z平面参数,无需导出临时文件,直接在绘图命令中指定z高度即可。同样先把轮廓数据补成闭合状态,直接执行绘图命令:

set pm3d
set pm3d depthorder
splot 'your_3d_heatmap.dat' w pm3d, \
      'your_closed_contour.dat' u 1:2:(1) w filledcurves z=1 fc rgb "#8000FF00" fs solid 0.5 t "标记区域"

注意必须显式添加z=1参数指定填充所在平面,缺省该参数时会触发默认的z=0竖线绘制逻辑,无法得到正确填充效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 17:48:12