如何将x轴上的值从实际值移动到轴原点

时间:2017-02-24 12:33:58

标签: plot gnuplot

我有数据在这样的文件中绘制:

(timestamp MegaBytes)
1487936469 0.003617
1487936470 0.081604
1487936471 0.244869
1487936472 0.322519
1487936473 0.242145
1487936474 0.34596
1487936475 0.385525
1487936476 0.324402
1487936477 0.154996
1487936478 0.24336
1487936479 0.38952
1487936480 0.46152
...

绘图
using 1:2 with lines lw 3
set xlabel "seconds"; set ylabel "MB"
set format x '%.0f'

enter image description here

情节很好,但x轴(时间)不太好看:是否有一个gnuplot命令允许我从x范围[1487936469last time stamp]转换为[ 0last value],以便x轴值从0而不是1487936469开始?

1 个答案:

答案 0 :(得分:1)

我自己觉得自己很愚蠢,但这就是我解决这个问题的方法:

gnuplot> set grid
gnuplot> set xlabel "seconds"
gnuplot> set ylabel "MB"

我的文件有.log扩展名:创建要记录的文件列表。

gnuplot> list = system('ls *.log')

“u”:使用“w l”:用线条,“lw”:线宽

gnuplot> plot for [file in list] file u 1:2 w l lw 3 title file

在此图之后,已设置特殊变量,请使用以下方法检查:

gnuplot> show variables all
    ...
    GPVAL_DATA_X_MIN = 1487936460.0 <- this is what I wanted
    ...

我将GPVAL_DATA_X_MIN减去x轴中的所有值:将其存储在变量中并重新绘制($1是第一列,带有时间戳的列):

gnuplot> MIN=GPVAL_DATA_X_MIN
gnuplot> plot for [file in list] file u ($1-MIN):2 w l lw 3 title file

enter image description here

好多了! 积分转到this questionthis question