如何在gnuplot中绘制3D向量?附曲面叠加向量失败问题
在Gnuplot中3D场景绘制向量的解决办法
Gnuplot的3D向量绘制(splot ... with vectors)需要指定6个数据列(或计算表达式),对应规则是:
- 前3个:向量起点的x、y、z坐标
- 后3个:向量的x、y、z分量(即终点坐标减去起点坐标)
你之前的代码里,向量绘制部分遗漏了using(可简写为u)关键字,这是导致向量无法显示的核心问题。
修正后的完整代码
set hidden3d set xlabel "x" set ylabel "y" set zlabel "z" set dgrid3d 10,10 qnorm 2 file = "surface.dat" # 先绘制曲面,再叠加法向量 splot file u 1:2:3 with lines, \ file u 1:2:3:($4-$1):($5-$2):($6-$3) with vectors lc rgb "red" lw 2
额外实用提示
- 若法向量尺寸不合适,可给分量乘缩放系数调整,比如
($4-$1)*0.1缩小向量,避免和曲面过度重叠 - 可通过
set style vector arrowhead size 0.05,20,60 filled自定义箭头的大小、角度和填充样式 - 确认数据文件
surface.dat确实包含6列有效数据:第1-3列为起点坐标,第4-6列为法向量终点坐标
内容的提问来源于stack exchange,提问作者boltz
相关产品推荐
相关产品推荐

