我试图用gnuplot绘制两个数据集。它们都是(x,y,z)三元组。它们没有排列在网格上。我想使用dgrid3d
和pm3d
绘制其中一个。最重要的是,我想覆盖其他数据集,但只是分散点。
举一个更具体的例子:我试图绘制一个接近曲面的圆柱体的效果。我想绘制曲面的反应以及dgrid3d
派上用场的反应。最重要的是,我想绘制圆柱体的位置,并将其圆周作为点。
我用过:
set dgrid3d 100,100,4
set pm3d
splot "dataset1" with pm3d, "dataset2" with dots
数据集大约有100x100点,排列在近广场上,所以100,100最适合这里。无论我如何绘制第二个数据集,它总是最终成为与圆柱相同尺寸的正方形,而不是一个漂亮的圆。当我关闭dgrid3d
时,我可以自己绘制第二个数据集,结果是圆柱体的圆周。
所以我的问题是:是否可以使用两个数据集绘制3D图形,一个使用dgrid3d
而另一个不使用它?
答案 0 :(得分:8)
是的,这是可能的,但它比你想象的要复杂一些。关键是使用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
您的尝试无效的原因是因为当dgrid3d生效时,所有读入的数据都会内插到网格中,然后使用您指定的任何样式进行绘制。
来自gnuplot' s help dgrid3d
启用后,从文件中读取3D数据
始终被视为分散的数据集。
作为旁注,此方法也可用于在pm3d上绘制轮廓。