我有数据在这样的文件中绘制:
(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'
情节很好,但x轴(时间)不太好看:是否有一个gnuplot命令允许我从x范围[1487936469
,last time stamp
]转换为[ 0
,last value
],以便x轴值从0
而不是1487936469
开始?
答案 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
好多了! 积分转到this question和this question。