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

使用pm3d与dgrid3d绘图时的网格及颜色异常问题求助

问题分析与解决

1. dgrid3d 参数理解偏差

set dgrid3d 3,6 里的两个数值是生成的网格点数量,不是你以为的区间/面数。gnuplot 会用这些点数生成 (点数-1)×(点数-1) 的面网格,所以设置3,6得到2行5列是正常逻辑。如果要得到3行6列的面网格,需要改成 set dgrid3d 4,7(面数=点数-1)。

2. 移除dgrid3d后绘图空白的原因

pm3d 要求数据是结构化网格格式,你的 test.dat 虽然数据是完整的(6个x值×3个y值),但缺少了分组空行——gnuplot 无法自动识别不同x值的分组,所以没法渲染pm3d曲面。

修复方案二选一:

方案一:修改数据格式

在每个x值对应的3行数据后加空行(最后一组可以不加),比如:

0   1   1
0   2   0
0   3   0

1   1   1   
1   2   0.25
1   3   0

2   1   1
2   2   0.5
2   3   0

3   1   0
3   2   0.5
3   3   0

4   1   0
4   2   0.25
4   3   1

5   1   0
5   2   0
5   3   1

之后移除 set dgrid3d 语句,直接用pm3d绘图即可。

方案二:调整gnuplot参数

不用改数据,换成 set pm3d map(专门适配pm3d的热图模式)替代 set view map,代码如下:

set autoscale
set ytics 1
set xtics 1
set ztics 0.1
set pm3d map  # 替换set view map,自动适配散点转结构化网格
set contour base  
set palette rgbformulae 22,13,10
set colorbox
set pm3d interpolate 1,1

splot 'test.dat' using 1:2:3 with pm3d notitle

3. 颜色显示异常的修正

如果颜色还是不符合预期,试试这几点:

  • 手动指定z值范围:添加 set zrange [0:1],避免自动缩放识别偏差
  • 调整插值参数:比如把 set pm3d interpolate 1,1 改成 interpolate 2,2,让颜色过渡更自然
  • 更换调色板公式:22,13,10是蓝红渐变,要是需要其他风格,可以换成3,11,6(彩虹色)这类公式

完整可用代码示例

无插值版(用原始数据)

先给test.dat加分组空行,再用这段代码:

set autoscale
set ytics 1
set xtics 1
set ztics 0.1
set view map
set contour base  
set palette rgbformulae 22,13,10
set colorbox

splot 'test.dat' using 1:2:3 with pm3d notitle

带插值版(生成3行6列面网格)

set autoscale
set ytics 1
set xtics 1
set ztics 0.1
set view map
set contour base  
set palette rgbformulae 22,13,10
set colorbox
set dgrid3d 4,7  # 对应3行6列的面网格
set pm3d interpolate 1,1

splot 'test.dat' using 1:2:3 with pm3d notitle

内容的提问来源于stack exchange,提问作者Juan Luis Rubio

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:13:21