使用gnuplot从离散数据绘制平滑球体

时间:2018-07-25 07:54:32

标签: gnuplot

我有从python代码生成的数据,例如:

u, v = np.mgrid[0:2*np.pi:180*1j, 0:np.pi:90*1j]
X = np.cos(u)*np.sin(v)
Y = np.sin(u)*np.sin(v)
Z = np.cos(v)

这被写入文件tmp.dat,我尝试使用以下命令在gnuplot中对其进行绘制:

set pm3d
set palette
set hidden
splot "tmp.dat" using 1:2:3 with pm3d

但是,这给了我:enter image description here 它在我想要的范围内,但是我想要一个 smooth 球,而不是它。 (我的真实数据是同一脉络;我希望在封闭的表面上保持透明。)我尝试添加set dgrid3d 50,50来进行插值,但是,我实际上并不理解我所得到的来自此:enter image description here 任何帮助或建议将不胜感激。可以将数据更改为参数化(使用uv扫描数据),但是,我不确定该怎么做-当我尝试时,结果是相同的。

1 个答案:

答案 0 :(得分:0)

这不是一个完整的答案,但是部分问题是“ set hidden3d”在这里不可用。 Gnuplot具有两个单独的子系统来表示曲面。其中之一由“ set hidden3d”控制,它可以跟踪边界线段并可以删除被遮挡的部分。另一个是pm3d,它使用实心四边形而不是边界线段。 pm3d图没有选择删除被遮挡的四边形的选项,但是您可以通过对它们进行深度排序来获得类似的效果。相关命令是

set pm3d depthorder

如果单个四边形近似为正方形,这会很好地工作,但是对于长而细的四边形却会产生不好的结果,因为小平面的两端在相邻小平面上的深度可能会冲突。