如何在gnuplot中设置时区?

时间:2013-01-15 14:21:33

标签: gnuplot

我有一个简单的gnuplot命令文件:

 ....
set xdata time
set timefmt "%s"
set format x "%H:%M"
....

其中x - timestamp列。

结果 - UTC格式的时间。我可以更改x轴的本地时间码吗?

5 个答案:

答案 0 :(得分:5)

今天在文档中遇到过这个问题:

  

转换为秒和转换秒假定为通用时间(这是相同的    作为格林威治标准时间)。没有改变时间的规定    区域或夏令时。如果您的所有数据都指向同一时区    (并且都是白天或标准)你不需要担心这些    的东西。但如果绝对时间对您的申请至关重要,那么您将会这样做    需要自己转换为UT。

来自help time/date

答案 1 :(得分:5)

我今天刚刚遇到过这个问题。您无需更改格式,只需更改数据即可。如果data.txt包含UTC格式的时间戳,并且您希望在PDT中显示它们(距离UTC约7小时),只需使用:

plot 'data.txt' using ($1+(-7*3600)):2

从每个x值中减去7小时(以秒为单位)。

答案 2 :(得分:1)

参加聚会有点晚了,我没有足够的声誉积分来发表评论,但是为了补充安东尼和赫尔曼克的回答,这就是我用他们的信息来实现的方法:

  • command.gnuplot中,假设第一个字段包含日期/时间,第二个字段包含Y轴的值:

plot "inputfile" using ($1 - offset):2

    在调用gnuplot时,从(bash)命令行

gnuplot -e "offset=$(date +%s -d '1 Jan 1970')" command.gnuplot

通常,偏移量可以正常工作,因为gnuplot在内部将日期/时间解释为距纪元的秒数​​。我不知道"offset=$(date ...)"的形式是否是bash专用的东西,但是您始终可以使用"offset=`date ...`"来代替。

编辑- 我发现在处理DST /夏令时更改时,此方法不能很好地工作。我将偏移量calc更改为此,现在效果更好:

  • command.gnuplot中,假设第一个字段包含日期/时间,第二个字段包含Y轴的值:

plot "inputfile" using ($1 + offset):2

    在调用gnuplot时,从(bash)命令行

gnuplot -e "offset=$(echo "日期+%z * 36" | bc)" command.gnuplot

这是如何工作的? date +%z-0400或类似的形式提供时区偏移,即Local_Time = UTC - 4 hours。如果我们将其视为一个数字(-400),则偏移量(以秒为单位)为-400 / 100 * 3600 = -400 * 36。 请注意,这不适用于增量为30分钟的时区(印度?),但是我敢肯定,通过创建一些数学运算,您也可以解决。

答案 3 :(得分:0)

除了先前的正确答案外,我还在

下执行此操作

的4.1版本开始,您可以避免为此使用派生到date的分支:

printf -v tzoff "%(%z)T" -1
tzoff=${tzoff:0:1}$(( ( 10#${tzoff:1:2}* 3600 + 10#${tzoff:3:2}* 60 ) ))

一些样本:

TZ=Asia/Katmandu printf -v tzoff "%(%z)T" -1
echo $tzoff 
+0545

tzoff=${tzoff:0:1}$(( ( 10#${tzoff:1:2}* 3600 + 10#${tzoff:3:2}* 60 ) ))
echo $tzoff 
+20700

TZ=America/Chihuahua printf -v tzoff "%(%z)T" -1
echo $tzoff 
-0700

tzoff=${tzoff:0:1}$(( ( 10#${tzoff:1:2}* 3600 + 10#${tzoff:3:2}* 60 ) ))
echo $tzoff 
-25200

然后在创建$tzoff文件时或通过将其添加到绘图命令文件中,将此.dat添加到值中。

printf -v plotcmd 'plot \47file.dat\47 using ($1%s):2' $tzoff

echo "$plotcmd"
plot 'file.dat' using ($1-25200):2

答案 4 :(得分:0)

此处发布的代码段对我不起作用,但这似乎可以解决问题:

git pull origin master --allow-unrelated-histories