将不同块中的数据相加

时间:2018-08-06 11:05:57

标签: gnuplot

这是交易-我有一个看起来像这样的文件:

n_blocks n_rows
title1
data1 data2 data3 data4 data5 data6 data7 data8 data9
data1 data2 data3 data4 data5 data6 data7 data8 data9
data1 data2 data3 data4 data5 data6 data7 data8 data9
.
.
.
title2
data1 data2 data3 data4 data5 data6 data7 data8 data9
data1 data2 data3 data4 data5 data6 data7 data8 data9
data1 data2 data3 data4 data5 data6 data7 data8 data9
.
.
.
END OF THE DATA

第一行包含两个数字-块数和每个块内的行数。在每个块之前有一行,表示该块的标题,然后每个块由n_rows行组成,每行由9个数据点组成。然后,文件以“文件结束”结束。

我想做的第一件事是绘制每个块的第1列对第8列,并带有适当的标题。我已经解决了如何使用命令plot "data.txt" every :::::n_blocks using 1:8来绘制特定数量的块的数据,但是如何从文本文件的第一行中自动提取块的数量,以及如何提取标题从每个街区开始。

我需要做的第二件事是将所有块的总和绘制在一起,因此对于第一列中的每个点,我在每个块中的第8列中绘制了相应数据点的总和。例如,绘制的第一个数据点将是每个块的第一行的第8列中所有条目的总和,绘制的第二个数据点将是每个块的第二行的第8列中的条目总和封锁等等。

我要的是多少?如有必要,我可以查看有关重新格式化数据文件的信息,但是我不希望这样做,因为我没有编写生成数据文件的程序。

1 个答案:

答案 0 :(得分:0)

我假设您的“数据块”由gnuplot所需的两行分隔。在这种情况下,以下命令将使用该块的第一行作为标题,一次提取并绘制一个块:

 plot for [i=0:*] 'blocks.dat' skip 1 index i using 1:5 title columnhead

对于此特定任务,最好使用“索引”选择器,而不是“每个”选择器。从第一行提取信息没有简单的方法。另一方面,绘图不需要此信息。上面显示的命令通过“跳过1”忽略它。

也可以进行求和,但是我不理解您对要求和的术语或要绘制的图的描述,因此我无法提供示例。