【问题标题】:gnuplot : plotting graph with a base offsetgnuplot :绘制带有基本偏移量的图形
【发布时间】:2013-08-26 21:33:50
【问题描述】:

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

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

我正在尝试在column 1 AND column 2column 1 and column 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"
~                                            

【问题讨论】:

    标签: bash sed awk gnuplot


    【解决方案1】:

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

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

    every ::::0 将命令限制在第一行,使用using 语句,您可以获得指定表达式的统计信息。在您的情况下,第二列的值存储在 STATS_min_x 变量中,第三列存储在 STATS_min_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 命令包吗?如果我在我的系统上输入统计信息,它会说找不到命令。我使用的是 Ubuntu 12.04。我找不到 stats 命令。我尝试了谷歌搜索,但没有多大帮助。
    • @liv2hak stats 命令是在 gnuplot 4.6 版中引入的。如果您有旧版本,则可以使用例如head 提取第一行。将带有stats 调用的行替换为:row1 = system('head -1 output.txt'); STATS_min_x = real(word(row1, 2)); STATS_min_y = real(word(row1, 3))。在这里,我使用了与我的答案相同的变量名,尽管它们不合适;)
    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-08
    • 2021-08-09
    相关资源
    最近更新 更多