Gnuplot:如何绘制日期/时间图表

Gnuplot:如何绘制日期/时间图表,gnuplot,Gnuplot,我想绘制这类数据: X轴:日期 Y轴:时间长度 数据如下所示: 22/02 51:10 25/02 63:10 01/03 50:55 23/03 52:10 我已经在X轴上做过了: set xdata time set timefmt "%d/%m" 但是我不知道如何管理Y轴。来自?扩展数据 目前只有一个timefmt, 这意味着所有的时间/日期 列必须符合此格式 因此,您需要稍微更改数据以符合一个设置 差不多 00:00:22/02 51:10:22/02 00:00:25/02 6

我想绘制这类数据:

  • X轴:日期
  • Y轴:时间长度
数据如下所示:

22/02 51:10
25/02 63:10
01/03 50:55
23/03 52:10
我已经在X轴上做过了:

set xdata time
set timefmt "%d/%m"

但是我不知道如何管理Y轴。

来自
?扩展数据

目前只有一个timefmt, 这意味着所有的时间/日期 列必须符合此格式

因此,您需要稍微更改数据以符合一个设置

差不多

00:00:22/02 51:10:22/02
00:00:25/02 63:10:22/02
00:00:01/03 50:55:22/02
00:00:23/03 52:10:22/02
请注意,您可以使用命令行工具在gnuplot中执行此操作,请参阅

一旦文件被编辑,你就可以像这样阅读它

set xdata time
set ydata time
set timefmt "%M:%S:%d/%m"
set format x "%d/%m"
set format y "%M:%S"
plot "date_time.dat" u 1:2 w l
如前所述,您只能使用一个timefmt。但是,如果可以将数据拆分为以下列:

22/02 51 10
25/02 63 10
01/03 50 55
23/03 52 10
plot 'file' u 1:($2 + $3/60)
plot 'file' u 1:($2/60 + $3/3600)
然后可以通过直接计算绘制时间长度,如下所示:

22/02 51 10
25/02 63 10
01/03 50 55
23/03 52 10
plot 'file' u 1:($2 + $3/60)
plot 'file' u 1:($2/60 + $3/3600)
要绘制分钟,或类似于此:

22/02 51 10
25/02 63 10
01/03 50 55
23/03 52 10
plot 'file' u 1:($2 + $3/60)
plot 'file' u 1:($2/60 + $3/3600)

打印小时数。

+1做得很好:您还可以使用awk:plot自动拆分gnuplot中的列“@Tom:我本来有一张给awk的便条,但在我看来OP有足够的经验知道这一点。不管怎样,现在我们也有你对完整性的评论;谢谢!:)非常没有解决方案!汤姆回答了我的问题,但你的成绩很好@Wolf不需要这样做,gnuplot可以处理微秒(从4.6开始?):数据
12:34:56.1234567
可以通过
set timemt'%H:%M:%S'
@Wolf Yes,使用
set timemt'%H:%M:%S'
以微秒的精度读取数据,如
12:34:56.123456
12.34:56.123457
,这些都是正确绘制的。当读取时间时,您不能指定精度,但是我不知道为什么gnuplot文档提到毫秒精度(在某一点上谈论至少毫秒精度)。您可以明确给出时间精度的唯一部分是输出,如
设置格式x“%M:%.3S”