我有两种不同时间格式的数据:
file1(%Y%j%H%M%S vel):
2011 170 0 0 0 0.017042
2011 170 0 30 0 0.002124
2011 170 1 0 0 0.061001
2011 170 1 30 0 0.096256
2011 170 2 0 0 0.073920
2011 170 2 30 0 0.048899
2011 170 3 0 0 0.039534
2011 170 3 30 0 0.044790
2011 170 4 0 0 0.052662
2011 170 4 30 0 0.063144
等...
file2(%Y%m%d%H%M潮):
2011 06 19 00 00 2.1950
2011 06 19 00 05 2.2650
2011 06 19 00 10 2.3290
2011 06 19 00 15 2.4030
2011 06 19 00 20 2.4730
2011 06 19 00 25 2.5480
2011 06 19 00 30 2.6220
2011 06 19 00 35 2.6890
2011 06 19 00 40 2.7690
2011 06 19 00 45 2.8460
2011 06 19 00 50 2.8970
2011 06 19 00 55 2.9690
2011 06 19 01 00 3.0610
2011 06 19 01 05 3.1370
2011 06 19 01 10 3.2030
2011 06 19 01 15 3.2670
等...
是否可以在同一图表中绘制这些数据?如果是的话,该怎么做?
我做的是:
设置xdata时间
设置timefmt“%Y%j%H%M%S”
set xtics“2011 170 0 0 0”,43200,“2011 172 0 0 0”
set xrange [“2011 170 0 0 0”:“2011 172 0 0 0”]
设置xtics格式“%j”
情节“./file1”u 1:6 w line ls 3 lc rgb“dark-red”notitle,\
“./file2”u 1:6 w line ls 3 lc rgb“black”notitle axes x1y2
结果似乎不对。
任何帮助将不胜感激
谢谢
答案 0 :(得分:1)
您必须手动解析第二个文件的时间。在gnuplot 5.0中,这非常舒服,因为您可以简单地将timecolumn
时间格式作为第二选项。然后它使用这种格式而不是set timefmt
给出的格式:
set xdata time
set timefmt "%Y %j %H %M %S"
set xtics "2011 170 0 0 0",43200, "2011 172 0 0 0"
set xrange ["2011 170 0 0 0":"2011 172 0 0 0"]
set xtics format "%j"
set y2tics
set ytics nomirror
plot "./file1.txt" u 1:6 w lines ls 3 lc rgb "dark-red" notitle, \
"./file2.txt" u (timecolumn(1, "%Y %m %d %H %M")):6 w lines ls 3 lc rgb "black" notitle axes x1y2
在早期的gnuplot版本中,您必须首先构造一个包含所有时间信息的字符串,并使用strptime
解析此字符串:
set xdata time
set timefmt "%Y %j %H %M %S"
set xtics "2011 170 0 0 0",43200, "2011 172 0 0 0"
set xrange ["2011 170 0 0 0":"2011 172 0 0 0"]
set xtics format "%j"
set y2tics
set ytics nomirror
mytimecolumn(c, fmt) = strptime(fmt, sprintf('%s %s %s %s %s', strcol(c), strcol(c+1), strcol(c+2), strcol(c+3), strcol(c+4)))
plot "./file1.txt" u 1:6 w lines ls 3 lc rgb "dark-red" notitle, \
"./file2.txt" u (mytimecolumn(1, "%Y %m %d %H %M")):6 w lines ls 3 lc rgb "black" notitle axes x1y2