2015-09-25 133 views
0

我的data.txt文件包含形成多边形的一部分的点的二维坐标。这些坐标随着时间而变化。该文件的结构是这样的:Gnuplot:如何从其顶点绘制多边形/轮廓

itr nbr_pts p1.x p1.y ...... pk.x pk.y 
(itr+1) .......... 
..... 

其中pk是多边形和nb_pts的第k个点/顶点数目的顶点。

我的问题是如何在某个迭代(行)从其顶点(p1,p2,... pk)绘制2D多边形?

此外,注意,不仅是一个数据文件/多边形但ñ的:DATA1.TXT .... dataN.txt

我想是这样的,但没有工作(NBR文件= 6)

N = 6 
set multiplot 
plot for [i=0:N-1] polygon_i = sprintf("%s/data%d.dat",filename, i) polygon_i val=$2 for [j=1:$2] u (j+1):(j+1+1) w lines 

我知道有多少polygones /文件(在此CAE 6),但我对每个文件的列数的先验知识;顶点的数量可以从多边形到另一个变化。

有什么想法吗?

回答

0

我的想法需要修改文件的结构。对于每次迭代时,存在含有该多边形的顶点的xy坐标的块:

# file: data1.txt 

# itr 0 
0 0 
1 1 
1 2 
0 0 


# itr 1 
1 3 
2 1 
0 1 
1 2 
1 3 


# itr 2 
3 1 
2 1 
0 0 
3 1 

注意,每个块由两个空行分离。对于迭代0(块0或itr 0),存在具有三个顶点的多边形,itr 1具有四个顶点,并且itr 2具有三个顶点。要获得闭合曲线,需要指定终点,例如,对于itr 1,我将点数为1 3两次。

对于这个文件,我们可以在迭代iter绘制多边形作为

iter = 1 # select block 1, or itr 1 
plot "data1.txt" index iter w lp ps 2 pt 7 

如果你有多个文件,然后尝试

# option 1 
nbr = 6  # number of files 
iter = 1  # select block 1, or itr 1 

plot for [i=1:nbr] "data".i.".txt" index iter w lp ps 2 pt 7 title "".i 

#option 2 
files = system("ls data*.txt") # get all datafiles in folder 
iter = 1       # select block 1, or itr 1 

plot for [data in files] data index iter w lp ps 2 pt 7 title data 
+0

感谢vagoberto! – Courier