Gnuplot:如何从其顶点绘制 polygon/contour
Gnuplot: how to draw polygon/contour from its vertices
我的 data.txt 文件包含构成多边形线段的点的二维坐标。这些坐标随着时间的推移而演变。该文件的结构如下:
itr nbr_pts p1.x p1.y ...... pk.x pk.y
(itr+1) ..........
.....
其中 pk 是多边形的第 k 个 point/vertex,nb_pts 是顶点数。
我的问题是如何在某个迭代(行)从其顶点(p1、p2、...pk)绘制二维多边形?
另外注意,这里的数据不是只有一个file/polygon,而是N个:data1.txt .... dataN.txt
我尝试过类似的方法但没有成功(文件数量 =6)
N = 6
set multiplot
plot for [i=0:N-1] polygon_i = sprintf("%s/data%d.dat",filename, i) polygon_i val= for [j=1:] u (j+1):(j+1+1) w lines
我知道有多少polygones/files(在这个cae中是6),但我不知道每个文件中的列数;顶点的数量可能因多边形而异。
有什么想法吗?
我的想法需要修改您的文件结构。对于每个迭代时间,都有一个块包含多边形顶点的 x
和 y
坐标:
# 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
我的 data.txt 文件包含构成多边形线段的点的二维坐标。这些坐标随着时间的推移而演变。该文件的结构如下:
itr nbr_pts p1.x p1.y ...... pk.x pk.y
(itr+1) ..........
.....
其中 pk 是多边形的第 k 个 point/vertex,nb_pts 是顶点数。
我的问题是如何在某个迭代(行)从其顶点(p1、p2、...pk)绘制二维多边形?
另外注意,这里的数据不是只有一个file/polygon,而是N个:data1.txt .... dataN.txt
我尝试过类似的方法但没有成功(文件数量 =6)
N = 6
set multiplot
plot for [i=0:N-1] polygon_i = sprintf("%s/data%d.dat",filename, i) polygon_i val= for [j=1:] u (j+1):(j+1+1) w lines
我知道有多少polygones/files(在这个cae中是6),但我不知道每个文件中的列数;顶点的数量可能因多边形而异。
有什么想法吗?
我的想法需要修改您的文件结构。对于每个迭代时间,都有一个块包含多边形顶点的 x
和 y
坐标:
# 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