如何根据数据更改时间格式

时间:2014-08-14 04:21:00

标签: gnuplot

您知道如何根据数据更改时间格式吗? 如果日期是这样的1月,我想在X轴上添加年份信息。

2013/01/01, 02/01, 03/01, ..., 11/01, 12/01, 2014/01/01, 02/21,....

我知道设置格式命令来更改它。

set format x "%m/%d"

set format x "%Y/%m/%d"

但我不知道如何定制它。

感谢。

1 个答案:

答案 0 :(得分:3)

这不是那么简单,因为正如你所说,使用gnuplot你只能设置一个没有任何条件的格式。

您可以通过使用set xtics add手动设置年度信息来解决此问题,就像在非常相似的问题mixing date and time on gnuplot xaxis中完成的那样。

这是一个工作脚本:

set xdata time
set timefmt '%Y-%m-%d %H:%M'
set format x '%m/%d'
set xrange ['2013-01-01 00:00':*]
set xtics '2013-01-01 00:00', 3*30*24*60*60

set xtics add ('2013/01/01' '2013-01-01 00:00', '2014/01/01' '2014-01-01 00:00')

plot 'data.dat' using 1:3 with linespoints

因此,您首先要设置输入数据的格式。在这里,我明确选择了不同的输入格式,以便您可以区分哪种格式。

然后设置x轴的输出格式,这对应于中间月份的输出格式。

接下来我明确地设置了xrange的起始值,因此范围从1月开始(因为我每隔三个月设置一个标签,set xtics ...)。

作为最后一步,您使用自定义格式手动覆盖January标签。在这种形式下,如果您有几年或者想要灵活,可能会有点麻烦。迭代一段时间不是问题。超出显示范围的标签将被忽略。所以你可以使用:

set for [y=2000:2014] xtics add (sprintf('%d/01/01', y) ''.y.'-01-01 00:00')

(注意,sprintf不能用于第二个字符串。)

使用以下测试数据文件data.dat

2013-01-01 00:00 12
2013-02-01 12:00 15
2013-04-01 00:00 1
2013-12-01 00:00 11
2014-01-01 14:00 14
2014-04-01 03:00 20

我得到结果(使用4.6.5):

plot showing result