GNUPlot:在新图上绘制每个数据块("对于每个数据块")

时间:2015-07-29 10:13:50

标签: graph plot gnuplot

我有一个文件,我正在用gnuplot绘图。我的数据如下:

x,y1,y2
0,0,0
1,0.0,0.1
1,0.1,0.15
1,0.3,0.2
    ... etc

              2 blank lines -> new block

0,0,0
0,0,0        (just example data)
0,0,0
    ... etc


              2 blank lines -> new block
0,0,0
0,0,0
0,0,0
    ... etc

        ... etc    (more blocks)

如果我运行命令:plot' file.csv'使用1:2,然后所有块出现在同一图表上。我有大约1000块,显然这会产生一些不可读的东西。

如何在不同的图表上绘制所有块?对于每个数据块"类似于"循环什么的?

可能的部分答案

我使用gnuplot for循环在这方面取得了进展。这实际上可能不是一个特别好的方法,我现在卡住了,因为我无法计算"数据块的数量"在我的档案中。

这是我到目前为止所做的:

NMAX=3 # How do I know what this should be?

do for [n=0:NMAX] {
   ofname=sprintf("%d.png", n)
   set output ofname
   plot 'timeseries.csv' index n using 1:2, 'timeseries.csv' index n using 1:3 with lines
}

也许这有用吗?目前我还不知道如何自动设置NMAX。

进一步发展

可以使用NMAX命令设置

statsstats 'datafile.csv'然后NMAX=STATS_blocks

可能有更好的方法。

1 个答案:

答案 0 :(得分:1)

这个问题帮助了我:Count number of blocks in datafile

我的代码:

stats datafile
NMAX=STATS_blocks

do for [n=0:NMAX] {
    ofname=sprintf("%d.png", n)
    set output ofname
    plot 'timeseries.csv' index n using 1:2, 'timeseries.csv' index n using 1:3 with lines
}