我正在尝试使用gnuplot绘制两个数据集.它们都是(x,y,z)三元组.它们没有排列在网格上.我想使用dgrid3d和绘制其中一个pm3d.最重要的是,我想覆盖其他数据集,但只是分散点.
举一个更具体的例子:我试图绘制一个圆柱接近曲面的效果.我想绘制表面的响应,这dgrid3d就是派上用场的地方.最重要的是,我想绘制圆柱体的位置,并将其圆周作为点.
我用了:
set dgrid3d 100,100,4
set pm3d
splot "dataset1" with pm3d, "dataset2" with dots
Run Code Online (Sandbox Code Playgroud)
数据集大约有100x100点,排列在近广场上,因此100,100最适合这里.无论我如何绘制第二个数据集,它总是最终成为与圆柱相同尺寸的正方形,而不是一个漂亮的圆.当我关闭dgrid3d时,我可以自己绘制第二个数据集,结果是圆柱体的圆周.
所以我的问题是:是否可以使用两个数据集绘制3D图形,一个使用dgrid3d而另一个不使用它?
是的,这是可能的,但它比你想象的要复杂一些.关键是要使用set table
对于你的例子:
set dgrid3d 100,100,4
set pm3d explicit
set table "interpolated_data.dat"
splot "dataset1" with pm3d #writes the interpolated data to "interpolated_data.dat"
unset table
unset dgrid3d
splot "interpolated_data.dat" with pm3d, "dataset2" with dots
Run Code Online (Sandbox Code Playgroud)
您的尝试不起作用的原因是因为当dgrid3d生效时,所有读入的数据都会内插到网格中,然后使用您指定的任何样式进行绘制.
从gnuplot help dgrid3d
启用时,从文件读取的3D数据始终被视为分散数据集.
作为旁注,此方法也可用于在pm3d的顶部绘制轮廓.