我有从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
但是,这给了我:
它在我想要的范围内,但是我想要一个 smooth 球,而不是它。 (我的真实数据是同一脉络;我希望在封闭的表面上保持透明。)我尝试添加set dgrid3d 50,50
来进行插值,但是,我实际上并不理解我所得到的来自此:
任何帮助或建议将不胜感激。可以将数据更改为参数化(使用u
和v
扫描数据),但是,我不确定该怎么做-当我尝试时,结果是相同的。
答案 0 :(得分:0)
这不是一个完整的答案,但是部分问题是“ set hidden3d”在这里不可用。 Gnuplot具有两个单独的子系统来表示曲面。其中之一由“ set hidden3d”控制,它可以跟踪边界线段并可以删除被遮挡的部分。另一个是pm3d,它使用实心四边形而不是边界线段。 pm3d图没有选择删除被遮挡的四边形的选项,但是您可以通过对它们进行深度排序来获得类似的效果。相关命令是
set pm3d depthorder
如果单个四边形近似为正方形,这会很好地工作,但是对于长而细的四边形却会产生不好的结果,因为小平面的两端在相邻小平面上的深度可能会冲突。