Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grid gnuplot中适用于非矩形数据的三维网格_Grid_Plot_Gnuplot_Envelope - Fatal编程技术网

Grid gnuplot中适用于非矩形数据的三维网格

Grid gnuplot中适用于非矩形数据的三维网格,grid,plot,gnuplot,envelope,Grid,Plot,Gnuplot,Envelope,我想在3d绘图中绘制点,并创建一个可以处理非矩形数据的网格。更具体地说,我的数据是 data.dat 还有我的gnuplot文件 plot.plt 不幸的是,dgrid3d似乎将我的数据设置为矩形,并绘制了矩形网格(实际上是方形网格)。有没有办法画出我的数据的受限封套?理想情况下,我想画出我的一组点的位置。您有几个选项可以做这样的事情——不幸的是,它们都需要您做一些工作 首先,需要注意的是,gnuplot可以处理曲面打印的非矩形网格(即使本例中只需要矩形曲面)。对于表面绘制,数据文件看起来像(注

我想在3d绘图中绘制点,并创建一个可以处理非矩形数据的网格。更具体地说,我的数据是

data.dat 还有我的gnuplot文件

plot.plt
不幸的是,
dgrid3d
似乎将我的数据设置为矩形,并绘制了矩形网格(实际上是方形网格)。有没有办法画出我的数据的受限封套?理想情况下,我想画出我的一组点的位置。

您有几个选项可以做这样的事情——不幸的是,它们都需要您做一些工作

首先,需要注意的是,gnuplot可以处理曲面打印的非矩形网格(即使本例中只需要矩形曲面)。对于表面绘制,数据文件看起来像(注意空白记录):

然后形成四边形。在这种情况下,第一个四边形将由点(x11,y11)、(x21,y21)、(x12,y12)、(x22,y22)形成。第二个四边形将由(x21,y21),(x31,y31),(x22,y22),(x23,y23)等组成。因此,给定一组点,您可以轻松创建一个“矩形网格”,它将容纳所有数据点。它不会均匀分布,但这也没什么问题。现在我们需要弄清楚如何删除点,这样gnuplot就不会绘制它们。这就是“把戏”。您可以在数据文件中将特定字符串标记为“缺少数据”(
设置数据文件缺少“字符串”
)。在这种情况下,gnuplot不会绘制该点,但它仍然会跟踪丢失数据的坐标,以便生成曲面

因此,在一天结束时,您的数据文件将如下所示:

x11 y11 ?
x21 y21 ?
x31 y31 z31
...

x12 y12 ?
x22 y22 z22
x23 y23 z23
...
绘制它的脚本是:

set datafile missing '?'
set surf
set view map #Not sure about this...depends on the view you want
splot "mydata.dat" u 1:2:3 w lines
如果你想让gnuplot计算“正交凸包”,我认为你在这方面运气不好

简单的方法

另外请注意,如果您希望在2d空间中使用纯色对象(如您发布的wikipedia链接上的图片),此问题将变得非常简单。如果可以创建仅包含要绘制对象顶点的数据文件(顺序为(x1,y1)连接到(x2,y2)连接到(x3,y3)…),则可以将该数据文件打印为:

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed

您有一些这样做的选择——不幸的是,它们都需要您做一些工作

首先,需要注意的是,gnuplot可以处理曲面打印的非矩形网格(即使本例中只需要矩形曲面)。对于表面绘制,数据文件看起来像(注意空白记录):

然后形成四边形。在这种情况下,第一个四边形将由点(x11,y11)、(x21,y21)、(x12,y12)、(x22,y22)形成。第二个四边形将由(x21,y21),(x31,y31),(x22,y22),(x23,y23)等组成。因此,给定一组点,您可以轻松创建一个“矩形网格”,它将容纳所有数据点。它不会均匀分布,但这也没什么问题。现在我们需要弄清楚如何删除点,这样gnuplot就不会绘制它们。这就是“把戏”。您可以在数据文件中将特定字符串标记为“缺少数据”(
设置数据文件缺少“字符串”
)。在这种情况下,gnuplot不会绘制该点,但它仍然会跟踪丢失数据的坐标,以便生成曲面

因此,在一天结束时,您的数据文件将如下所示:

x11 y11 ?
x21 y21 ?
x31 y31 z31
...

x12 y12 ?
x22 y22 z22
x23 y23 z23
...
绘制它的脚本是:

set datafile missing '?'
set surf
set view map #Not sure about this...depends on the view you want
splot "mydata.dat" u 1:2:3 w lines
如果你想让gnuplot计算“正交凸包”,我认为你在这方面运气不好

简单的方法

另外请注意,如果您希望在2d空间中使用纯色对象(如您发布的wikipedia链接上的图片),此问题将变得非常简单。如果可以创建仅包含要绘制对象顶点的数据文件(顺序为(x1,y1)连接到(x2,y2)连接到(x3,y3)…),则可以将该数据文件打印为:

set fillstyle #However you want the object to appear
plot "datafile.dat" u 1:2 with filledcurves closed

谢谢!但是,它并没有解决我的dgrid3d问题。我可以使用
w行
,但我想使用
dgrid3d
链接我的点。还感谢fillstyle的2d技巧,它非常有用@vanna--
dgrid3d
在矩形网格上重新采样数据,以便将非网格数据转换为网格数据--对此您无能为力。但是,如果您在数据文件中的适当位置插入了空行,那么就不需要它了——然后gnpulot会立即将您的数据解释为网格化。非常感谢!但是,它并没有解决我的dgrid3d问题。我可以使用
w行
,但我想使用
dgrid3d
链接我的点。还感谢fillstyle的2d技巧,它非常有用@vanna--
dgrid3d
在矩形网格上重新采样数据,以便将非网格数据转换为网格数据--对此您无能为力。但是,如果您在数据文件中的适当位置插入了空行,那么就不需要这样做了——然后gnpulot会立即将您的数据解释为网格化数据。