使用gnuplot在同一图表上绘制两个数据集。一个是dgrid3d,另一个没有

时间:2012-03-13 13:56:44

标签: gnuplot

我试图用gnuplot绘制两个数据集。它们都是(x,y,z)三元组。它们没有排列在网格上。我想使用dgrid3dpm3d绘制其中一个。最重要的是,我想覆盖其他数据集,但只是分散点。

举一个更具体的例子:我试图绘制一个接近曲面的圆柱体的效果。我想绘制曲面的反应以及dgrid3d派上用场的反应。最重要的是,我想绘制圆柱体的位置,并将其圆周作为点。

我用过:

set dgrid3d 100,100,4
set pm3d
splot "dataset1" with pm3d, "dataset2" with dots

数据集大约有100x100点,排列在近广场上,所以100,100最适合这里。无论我如何绘制第二个数据集,它总是最终成为与圆柱相同尺寸的正方形,而不是一个漂亮的圆。当我关闭dgrid3d时,我可以自己绘制第二个数据集,结果是圆柱体的圆周。

所以我的问题是:是否可以使用两个数据集绘制3D图形,一个使用dgrid3d而另一个不使用它?

1 个答案:

答案 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上绘制轮廓。