用gnuplot解析带有值和绘图的时间戳

时间:2014-04-23 22:46:37

标签: format timestamp gnuplot

我有这些data.txt:

[1384395497218,679],[1384399097218,679],[1384402697218,679]...

[timestamp,value]

首先是时间戳1384395497218 - > 1384395497.218 - >星期四,2013年11月14日02:18:17 GMT。 第二个是计算的东西

我想在x轴上绘制带日期的线图,并在y轴上计数。我怎么能这样做?

Example:
x-axis = "14 November" y-axis = "679"..

1 个答案:

答案 0 :(得分:2)

这是一种非常奇怪的输入格式。如果可以的话,你应该选择一个更适合的。 Gnuplot无法处理此问题,您必须在绘制数据文件之前对其进行预处理。这可以做到,例如使用perl和正则表达式如下:

如果您的数据文件test.txt的值为

[1384395497218,679],[1384399097218,679],[1384402697218,679]

并在命令行中使用以下调用:

perl -pe 's/\[(\d+)([\d]{3}),(\d+)\],?/\1.\2 \3\n/g' test.txt

您将数据格式化为

1384395497.218 679
1384399097.218 679
1384402697.218 679

可以用gnuplot绘制。要在运行中完成预处理,请使用语法

plot '< perl ...'

您的数据的简短脚本例如:

set timefmt '%s'
set xdata time
set format x '%d %B'
set xtics 24*60*60
getdata = '< perl -pe ''s/\[(\d+)([\d]{3}),(\d+)\],?/\1.\2 \3\n/g'' test.txt'
plot getdata using 1:2 with linespoints notitle

更多说明:

  • 时间格式%s读入时间戳,也可以包含十进制数字(您也可以删除它们。
  • set xtics 24*60*60每天设置一个主要抽搐
  • 使用set format x '%d %B',您可以为x轴上的时间输出格式设置不同的格式。

4.6.4的结果是:

enter image description here