3d 数据的 2d 输出不是通过块号而是通过列值

2d output of 3d data not via block number but value of column

我有一些像这样的 3d 数据:

0.0  1. 2.
0.0  2. 7.
0.0  3. 1.1

0.1  1. 8.
0.1  2. 5.
0.1  3. 1.

0.2  1. 6.
0.2  2. 3.
0.2  3. 4.

第一行是 "t"(时间)轴,第二列是 "x",第三列是我的变量的实际值。 当然,以上是示意图。

现在,我只想绘制 "time" t=0.2 的块。 有了上面的内容,我可以简单地查看它对应于哪个块号,在这种情况下我可以只使用 every :::2::2 。 问题是我的实际文件有几万行,组成几千个块。 如果我只想绘制某个时间对应的区块,统计某个时间对应的区块号会非常繁琐。 因此,有没有办法让我给 gnuplot what "time"(上例中的第一列)我希望它绘制相应的块; gnuplot 在内部计算出相关块? 你可能会假设我知道确切的时间,尽管在最佳情况下,我想给 gnuplot 一个时间 t,然后 gnuplot 查找文件的第一列并输出时间最接近给定时间 t 的块。

简单地使用三元运算符作为过滤器:

(==0.2 ? : NaN)

言下之意: 如果第一列等于0.2,则取第二列的值为x-value,否则取NaN(不会绘制。)

代码:

### filter data
reset session

$Data <<EOD
0.0  1. 2.
0.0  2. 7.
0.0  3. 1.1

0.1  1. 8.
0.1  2. 5.
0.1  3. 1.

0.2  1. 6.
0.2  2. 3.
0.2  3. 4.

0.3  2. 3.
0.3  1. 2.
0.3  4. 5.
EOD

plot $Data u (==0.2 ?  : NaN) : 3 w lp pt 7 lc rgb "red"
### end of code

结果: