考虑以下示例输入文件:
yyyymmdd HHMM HHMM
20150501 0800 0140
20150502 0900 0021
20150503 1000 0021
20150504 0830
20150505 0945
20150506 1145 0340
第一列是year/month/day
,第二列是&第三是hours
& minute
我需要使用gnuplot
显示所有这些列的单个图,我遇到的主要问题是"设置timefmt"是独特的,而我需要支持两种不同的格式......任何建议?
我正在尝试在函数中使用strptime
但是使用gnuplot语法有点丢失。
澄清这是我正在做的事情的一个例子:
reset
# Input:
# yyyymmdd HHMM HHMM
# 20150505 0800 0020
# Y
set ydata time
set format y "%H%M"
set timefmt "%H%M"
set ylabel "thisisy"
#
gettime2(tcol) = strptime('%H%M',strcol(tcol))
set grid
plot '-' using 1:(gettime2(2)) with lines title 'A' #, '' using 0:3 title 'B' with lines
20150501 0800 0140
20150502 0900 0021
20150503 1000 0021
20150504 0830
20150505 0945
20150506 1145 0340
我在Y轴上看到的标签类似于' 2.01505x10e7',我希望原始日期或至少作为日期:)
答案 0 :(得分:1)
这是另一个尝试:我所做的是在x轴上使用第一列作为日期,在y轴上使用第二列和第三列:
reset
set ydata time
set format y "%H:%M"
set xdata time
set format x "%d.%m.%Y"
set xtics 86400
gettime(tcol) = strptime('%H%M', strcol(tcol))
getdate(dcol) = strptime('%Y%m%d', strcol(dcol))
set style data linespoints
plot '-' using (getdate(1)):(gettime(2)) title "A",\
'' using (getdate(1)):(valid(3) ? gettime(3) : 1/0) title "B"
20150501 0800 0140
20150502 0900 0021
20150503 1000 0021
20150504 0830
20150505 0945
20150506 1145 0340
e
20150501 0800 0140
20150502 0900 0021
20150503 1000 0021
20150504 0830
20150505 0945
20150506 1145 0340
e
使用valid
函数,可以检查给定列是否包含有效数字。如果第三列为空,那么为了防止strptime
函数中的错误,这是必要的。
如您所见,无效条目会导致行被中断。如果您不想这样,则需要为这些条目提供默认值,然后使用这些条目而不是1/0
。