【发布时间】:2017-07-26 04:48:49
【问题描述】:
我正在尝试使用 gnuplot 将数据绘制为时间的函数。我遇到了时间数据(x 轴)不正确的问题。此问题与here 发布的问题类似,但该帖子似乎无法解决我的问题。
首先,这里是显示错误的文件“data.txt”的子集
996,1.81014336621038094E+07,1.04721577434964254E+07
997,1.81073887058396861E+07,1.04688883975542113E+07
998,1.81123550412347727E+07,1.04660263576711770E+07
999,1.81165058190760165E+07,1.04628236696091276E+07
1000,1.81200135215993598E+07,1.04593579882744774E+07
1001,1.81230027468293682E+07,1.04556943748914227E+07
1002,1.81256090021481551E+07,1.04518411259850748E+07
1003,1.81280483217409961E+07,1.04478383895292878E+07
1004,1.81311435732491128E+07,1.04439282290004119E+07
第一列对应于儒略日期,第 2 列和第 3 列包含数据。为了绘制数据,我使用了以下交互式 gnuplot 命令:
set datafile separator ","
set terminal png
set xdata time
set timefmt "%j"
set output "test_figure.png"
plot "data.txt" using 1:2 with lines lw 2 lt 1
这会产生以下情节: Figure with incorrect timeseries
如果我将 data.txt 文件更改为,我会得到正确的数字(唯一的区别是前 4 行的第一列中的前导零):
0996,1.81014336621038094E+07,1.04721577434964254E+07
0997,1.81073887058396861E+07,1.04688883975542113E+07
0998,1.81123550412347727E+07,1.04660263576711770E+07
0999,1.81165058190760165E+07,1.04628236696091276E+07
1000,1.81200135215993598E+07,1.04593579882744774E+07
1001,1.81230027468293682E+07,1.04556943748914227E+07
1002,1.81256090021481551E+07,1.04518411259850748E+07
1003,1.81280483217409961E+07,1.04478383895292878E+07
1004,1.81311435732491128E+07,1.04439282290004119E+07
Figure with correct timeseries
有没有办法让我编写 gnuplot 代码不需要前导零?实际数据集的朱利安日期为 1 到 10,000,如果我用前导零写入数据以填充 5 位数字(即 00001),则会收到“一年中的非法日期”错误。
我确实注意到两个图之间的 x 轴刻度标签不同(可能暗示了我遇到的问题的根源),但我无法确定出了什么问题。
注意:这个“错误”只出现在我从 999 到 1000 时。从儒略日期 9 到 10 没有这个乱序问题。
提前感谢您的帮助!
【问题讨论】:
标签: datetime time gnuplot julian-date