Bash gnuplot:使用基准偏移量打印图形

Bash gnuplot:使用基准偏移量打印图形,bash,sed,awk,gnuplot,Bash,Sed,Awk,Gnuplot,我有一个包含一些数据的文件,如下所示 1 0x5212cb03ca115ac0 0x3665fb5f1ac1 2 0x5212cb03ca115cc0 0x3665fb5f1ac7 3 0x5212cb03ca115ea0 0x3665fb5f1acd 4 0x5212cb03ca1160c0 0x3665fb5f1ad3 5 0x5212cb03ca1162a0 0x3665fb5f1ad9 6 0x5212cb03ca1164c0 0x3665fb5f1ade 7

我有一个包含一些数据的文件,如下所示

1  0x5212cb03ca115ac0  0x3665fb5f1ac1
2  0x5212cb03ca115cc0  0x3665fb5f1ac7
3  0x5212cb03ca115ea0  0x3665fb5f1acd
4  0x5212cb03ca1160c0  0x3665fb5f1ad3
5  0x5212cb03ca1162a0  0x3665fb5f1ad9
6  0x5212cb03ca1164c0  0x3665fb5f1ade
7  0x5212cb03ca1166a0  0x3665fb5f1ae4
8  0x5212cb03ca1168a0  0x3665fb5f1aea
9  0x5212cb03ca116aa0  0x3665fb5f1af0
10  0x5212cb03ca116ca0  0x3665fb5f1af6
11  0x5212cb03ca116ea0  0x3665fb5f1afc
12  0x5212cb03ca1170a0  0x3665fb5f1b02
13  0x5212cb03ca117280  0x3665fb5f1b08
14  0x5212cb03ca117480  0x3665fb5f1b0e
15  0x5212cb03ca117680  0x3665fb5f1b14
16  0x5212cb03ca1178a0  0x3665fb5f1b1a
17  0x5212cb03ca117a80  0x3665fb5f1b20
18  0x5212cb03ca117c80  0x3665fb5f1b26
19  0x5212cb03ca117e80  0x3665fb5f1b2c
20  0x5212cb03ca118080  0x3665fb5f1b31
21  0x5212cb03ca118280  0x3665fb5f1b37
22  0x5212cb03ca118480  0x3665fb5f1b3d
我试图在
列1和列2
以及
列1和列3
之间绘制一个图表。 现在,第2列和第3列中的值按严格的升序排列。我希望以这样的方式缩放图形:第2列和第3列的第0行被视为基值或“0” 我想要两张图 “column 1 AND column 2”和“column 1 AND column 3”将绘制在同一个图形中,以便比较两个图形的斜率。下面给出了我正在使用的模板plt文件

#!/bin/bash

set terminal pngcairo size 1280,960 enhanced font 'Verdana,10'

set xlabel "seq number"
set ylabel "timestamp"

set title "ts vs sequence number"

set key reverse Left outside
set grid

set pointsize 1.0
set style data linespoints

set output 'erf_ts_plot.png'
plot "output.txt" using 1:2 title "erf_ts"
set output 'ixia_ts_plot.png'
plot "output.txt" using 1:3 title "ixia_ts"
~                                            

要提取第一行的值,可以使用
stats
命令:

stats "output.txt" every ::::0 using 2:3
every:::0
将命令限制在第一行,使用
using
语句可以获得指定表达式的统计信息。在本例中,第二列的值存储在
STATS\u min\u x
变量中,第三列存储在
STATS\u min\u y
变量中

要在一个图形中绘制两个图形,只需使用一个
plot
命令,两个图形之间用逗号分隔。完整的脚本如下所示:

set terminal pngcairo size 1280,960

set xlabel "seq number"
set ylabel "timestamp"

set title "ts vs sequence number"

set key reverse Left outside
set grid

set pointsize 1.0
set style data linespoints

stats "output.txt" every ::::0 using 2:3

set output 'erf_ts_plot.png'
plot "output.txt" using 1:($2 - STATS_min_x) title "erf_ts",\
     "" using 1:($3 - STATS_min_y) title "ixia_ts"
结果是:


我假设
ts
是下标,然后必须放在括号中才能设置为下标。否则,只有
t
是下标。

stats命令需要特殊的包吗?如果我在我的系统上输入stats,它会说找不到命令。我使用的是Ubuntu 12.04。我找不到stats命令。我尝试过谷歌搜索,但没有什么帮助。@liv2hak
stats
命令是在gnuplot版本4.6中引入的。如果您的版本较旧,则可以使用例如
head
来提取第一行。将行替换为
stats
调用:
row1=system('head-1output.txt');STATS_min_x=real(单词(第1行,第2行));STATS\u min\u y=real(word(第1行,第3行))
。在这里,我使用了与我的答案相同的变量名,尽管它们并不合适