在gnuplot中堆叠图

时间:2018-07-30 09:35:23

标签: gnuplot

我目前正在从多个文件中绘制图形。数据基本上是时间序列,第一列带有时间戳,其他列具有多次测量。时间戳并非在所有文件中都完全匹配。不过,我想将图堆叠在其他图的上方/上方。具有gnuplot手段可以促进这一点-例如还可以在必要时进行插值吗?

文件1:

0.1 42 1 100
0.2 43 0 102
0.3 45 -2 105

文件2:

0.15 38 -3 88
0.25 37 -2 88.5

plot 'file1' using 1:2 w l, 'file2' using 1:2 w l STACK_ME_PLEASE

因此,在此示例中,我想显示来自 file2 的点大致位于(0.15, 42.5+38)(0.25, 44+37)上-这些点堆叠在 file1的图形上方

1 个答案:

答案 0 :(得分:0)

如果这仍然相关,以下代码涵盖了您的示例,但是,由于您没有提供有关一般数据的信息,因此以下建议可能不适用于更一般的情况。 如果第二个文件的数据恰好位于第一个文件的两个数据点的中间,则数据仅被“堆叠”。也许通过一些额外的努力,它可以以这样一种方式进行调整,如果它只是在第一个文件的两个数据点之间的某个位置,它仍然“堆叠”数据。

代码:

### "stacking" data
reset session

$Data1 <<EOD
0.1   42   1   100
0.2   43   0   102
0.3   45  -2   105
EOD

$Data2 <<EOD
0.15   38   -3   88
0.25   37   -2   88.5
EOD

set table $Data3
    plot x1=y1=NaN $Data1 u (x0=x1,x1=$1,(x0+x1)/2.):(y0=y1,y1=$2,(y0+y1)/2.) w table
    plot $Data2 u 1:2 w table
unset table

set table $Data4
    plot $Data3 u 1:2 smooth freq
unset table

set yrange [0:]
set key top left

plot $Data1 u 1:2 w lp pt 7 lc "red", \
     $Data2 u 1:2 w lp pt 7 lc "web-green", \
     $Data4 u 1:2 w lp pt 7 lc "cyan"
### end of code

结果:

enter image description here