我从工作站获得数据(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
仍然只绘制日志文件中的数据 : - (
答案 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会对列重新编号,以使日期只有一列。否则,日志文件中的日期部分将被视为其自己的列,包含未使用的字符串值。