绘制具有不同时间格式的两个文件

时间:2015-08-18 15:42:51

标签: gnuplot

我从工作站获得数据(TimeStamp%Y-%m-%d%H:%M)我想与参考文件进行比较(TimeStamp:%H:%M ) 气象站的数据文件有1分钟的分钟 参考文件每15分钟有一个条目。

我试图将两个文件绘制成相同的轴但由于某种原因它不起作用。 在绘制参考文件时,我还尝试了(timecolumn(1,"%H:%M")命令。

2014-12-24 06:00    1.00    0.93    0.93    0.00    9   4.8 4.8 4.8 63
2014-12-24 06:01    1.00    0.93    0.93    0.00    9   4.8 4.8 4.7 63
2014-12-24 06:02    1.00    0.93    0.93    0.00    9   4.7 4.7 4.7 63

2. Plot(CI Reference)永远不会在情节上出现。

气象站输入文件:

08:22   56  32  161 54  282 85  29  349
08:37   75  42  228 68  358 112 40  460
08:52   94  51  295 81  425 131 46  539

参考输入文件:

clear
reset
set title "24.12.2014" font "verdana,08"
set xdata time
set timefmt "%Y-%m-%d %H:%M"
set format x "%H:%M" time
set xlabel "Time"
set ylabel "CloudinessIndex" 
set y2label "Irradiance"
set ytics (0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0)
set yrange [0:1]
set ytics nomirror
set y2range [0:1200]
set y2tics (0,100,200,300,400,500,600,700,800,900,1000,1100,1200)
set xrange ['06:00':'22:00']
set autoscale x
set nokey
set grid
#Plot:
plot s=0, "data_20141224.csv" using \
(s==0 ? (s=timecolumn(1,"%Y-%m-%d %H:%M"),0) : (timecolumn(1,"%Y-%m-%d %H:%M")-s)):25 axes x1y2 linewidth 1 lc rgb 'orange' w l title 'SolarRadiation',\
"refdata.txt" using (timecolumn(1,'%H:%M')):4 axes x1y2  linewidth 1 lc rgb 'yellow' w l title 'CI Reference',

迄今为止帮助的Thx 这就是我输入的内容:

/(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?/g

仍然只绘制日志文件中的数据 : - (

2 个答案:

答案 0 :(得分:1)

要自动偏移第一个数据点的值,您可以执行以下操作:

 plot s=0, datafile using \
    (t=$1, s==0 ? (s=t,t-s) : t-s) : 2

s=0是一项任务,gnuplot没有绘制这些内容。 using语句由ternary operator(a?b:c)和两个serial evaluation s(逗号)组成,只返回最后一个值。

要偏移日期(因为您只想要白天),您必须使用floor()功能将s舍入到00:00。 设置正确的文件名和格式字符串变量,然后执行

 plot s=0, logfile using \
      (t=timecolumn(1,fstr1), s==0 ? (s=24*3600*floor(t/24/3600),t-s) : t-s) ,\
      reffile using (timecolumn(1,fstr2)):2

现在你应该在你的情节中有两个数据集。设置格式x fstr time`设置,装饰等等,你就完成了。

答案 1 :(得分:1)

如果您想要更简单:只需忽略日志文件中的日期部分:

set xdate time
set timefmt "%H:%M"
set format x "%H:%M" time
plot data using 2:3, ref using 1:2

如果时间格式说明符包含空格(例如"%y-%m-%d%H:%M"),gnuplot会对列重新编号,以使日期只有一列。否则,日志文件中的日期部分将被视为其自己的列,包含未使用的字符串值。