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命令。我尝试过谷歌搜索,但没有什么帮助。@liv2hakstats
命令是在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行))
。在这里,我使用了与我的答案相同的变量名,尽管它们并不合适代码>。