2015-09-25 132 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