用Gnuplot绘图

时间:2018-06-11 06:08:44

标签: gnuplot

我有这个输入数据,我想用gnuplot绘图。

01-02-18      456
01-05-18      438
01-06-18      451
01-09-18      458

如何调用gnuplot?

4 个答案:

答案 0 :(得分:1)

据我所知,您的预期输出是:

date(mm-dd-yy) time(in s since midnight)

如果我是对的,你可以使用:

paste <(awk '{print $1}' dump.run) <(awk '{print $3}' dump.run | awk -F ':' '{print 3600*$1+60*$2+$3}')

输出:

02-02-18    448.932
02-03-18    445.523
02-04-18    443.869
02-05-18    446.106

答案 1 :(得分:1)

我认为在这种情况下不需要任何perl / awk预处理。 Gnuplot可以本地处理这样的输入,你只需要指定正确的timefmt

$DATA <<EOD
01-02-18      456
01-05-18      438
01-06-18      451
01-09-18      458
EOD

set xdata time
set timefmt '%d-%m-%y'
set format x '%d-%m-%y'

plot $DATA u 1:2 w lp 

答案 2 :(得分:0)

这是的工作(我认为;)

perl -pe 's/^([0-9-]+)\s+(\d+)\s+(\d+):(\d+):(\d+)\.(\d+)/sprintf("%s %d.%d", $1, $2*86400+$3*3600+$4*60+$5, $6)/e;' <dump.run
02-02-18 448.932
02-03-18 445.523
02-04-18 443.869
02-05-18 446.106

或者

perl -pe 's/
    ^([0-9-]+)\s+(\d+)\s+(\d+):(\d+):(\d+)\.(\d+)
/
    sprintf("%s %d.%d", $1, $2*86400+$3*3600+$4*60+$5, $6)
/ex;' <dump.run

在perl正则表达式中使用x修饰符,以便能够拆分它们。

02-02-18 448.932
02-03-18 445.523
02-04-18 443.869
02-05-18 446.106

答案 3 :(得分:0)

如果您有awkgnuplot,则可以使用此脚本:

awk '{print $1,substr($3,1,2)*3600+substr($3,4,2)*60+substr($3,7)}' file | gnuplot -e 'set xdata time; set timefmt "%m-%d-%y"; plot "/dev/stdin" using 1:2 with lines'

awk脚本将输入文件的第三列转换为秒。

将结果数据(日期,秒数)传递给gnuplot进行显示。 X轴设置为参数xdata的日期,格式设置为timefmt