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

使用gnuplot在同一图形上绘制两个数据集。一个带有dgrid3d,另一个没有,gnuplot,Gnuplot,我试图用gnuplot绘制两个数据集。他们都是(x,y,z)三胞胎。它们不是排列在网格上的。我想使用dgrid3d和pm3d绘制其中一个。最重要的是,我想覆盖其他数据集,但只是分散的点 举一个更具体的例子:我试图绘制圆柱体接近曲面的效果。我想绘制曲面的响应,这就是dgrid3d方便使用的地方。除此之外,我想画出圆柱体的位置,我把它的周长作为点 我用过: set dgrid3d 100,100,4 set pm3d splot "dataset1" with pm3d, "dataset2" wi

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

举一个更具体的例子:我试图绘制圆柱体接近曲面的效果。我想绘制曲面的响应,这就是
dgrid3d
方便使用的地方。除此之外,我想画出圆柱体的位置,我把它的周长作为点

我用过:

set dgrid3d 100,100,4
set pm3d
splot "dataset1" with pm3d, "dataset2" with dots
数据集大约有100x100个点,排列在一个近正方形上,因此100100在这里效果最好。无论我如何绘制第二个数据集,它最终总是一个与圆柱体尺寸相同的正方形,而不是一个漂亮的圆。当我关闭
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
尝试不起作用的原因是,当dgrid3d生效时,所有读入的数据都会插值到栅格中,然后使用指定的样式打印

从gnuplot的帮助dgrid3d 启用后,将从文件中读取三维数据 始终将其视为分散的数据集


作为旁注,此方法也可用于在pm3d顶部绘制轮廓。

当然
set table
是gnuplot中很少使用的一个角落,我认为它在某些情况下非常有用。我确信这不是做某些事情的最有效的方法,因为它创建了一个临时文件,但对于很多事情来说,这是唯一的方法。对于较新的gnuplot版本,只有在打印到表时删除“With pm3d”时,它才起作用。