Graphics Gnuplot:如何在多个数据块上用一条连续线进行绘图?

Graphics Gnuplot:如何在多个数据块上用一条连续线进行绘图?,graphics,gnuplot,line-plot,Graphics,Gnuplot,Line Plot,我有一个被分割成多个块的dat文件,例如如下所示: # Time (s) x (m) 0.0 0.0 1.0 1.0 2.0 2.0 3.0 3.0 4.0 4.0 5.0 5.0 5.0 10.0 6.0 11.0 7.0 12.0 8.0 13.0 9.0 14.0 10.0 15.0 以下最小脚本:

我有一个被分割成多个块的dat文件,例如如下所示:

#   Time (s)    x (m)
     0.0    0.0
     1.0    1.0
     2.0    2.0
     3.0    3.0
     4.0    4.0
     5.0    5.0


     5.0   10.0
     6.0   11.0
     7.0   12.0
     8.0   13.0
     9.0   14.0
    10.0   15.0
以下最小脚本:

filename = 'test.dat';

set terminal pngcairo size 960, 540 font 'Verdana, 20'
set output "test.png"
unset key
set xlabel "Time (s)"
set ylabel "x (m)"
set grid
set autoscale fix

plot filename u 1:2 w l lw 1.0 lc rgb 'black' notitle
生成此图:

Gnuplot绘制两条线,每个块一条。但是,由于两个块之间的x数据是不连续的,因此在绘图中会显示跳跃

我想在输出图中连接这两行,而不修改数据文件。有办法做到这一点吗


也许可以通过读取每个块的最后一行和下一块的第一行并在这两个点之间绘制一条线来完成,但我不熟悉任何可以完成这项工作的内置函数。

我想到的第一种方法是将数据绘制到表中。 这将删除空行。也许有更好的方法

代码:

### remove empty lines in data
reset session

$Data <<EOD
#   Time (s)    x (m)
     0.0    0.0
     1.0    1.0
     2.0    2.0
     3.0    3.0
     4.0    4.0
     5.0    5.0


     5.0   10.0
     6.0   11.0
     7.0   12.0
     8.0   13.0
     9.0   14.0
    10.0   15.0
EOD

set table $Data2
    plot $Data u 1:2 w table
unset table

plot $Data2 u 1:2 w l
### end of code
结果:

### remove empty lines in data
reset session

$Data <<EOD
#   Time (s)    x (m)
     0.0    0.0
     1.0    1.0
     2.0    2.0
     3.0    3.0
     4.0    4.0
     5.0    5.0


     5.0   10.0
     6.0   11.0
     7.0   12.0
     8.0   13.0
     9.0   14.0
    10.0   15.0
EOD

set table $Data2
    plot $Data u 1:2 w table
unset table

plot $Data2 u 1:2 w l
### end of code

太好了!表格功能正是我所需要的,它只需要你额外写的3行。非常感谢。顺便说一下,为了使用文件中的数据,我用文件名替换了$data。@BorisBenedikter,是的,我没有明确提到这一点。实际上,还有另一种方法。。。在一行中,无需“加倍”内存中的数据。