我试图让gnuplot能够(a)读取我的输入时间格式,并且(b)按照输入文件的顺序绘制时间。我正在尝试绘制过去24小时内从18 UTC开始的值更改。
它看起来不像:
set xdata time
set timefmt "%H%M"
它也喜欢绘制我的xaxis值,从0000 UTC到2300 UTC,并删除前导零。请参阅下面的输入文件。我希望最新的数据(在这种情况下为1800UTC)在我的xaxis的右侧。谢谢。
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
以此类推...
答案 0 :(得分:1)
Michael O.建议使用完整的日期以及年,月,日,这可能是处理主题最通用的方法。 但是,如果您不能或不想更改数据,则可以使用以下命令:
解决方案1:当数据通过“ 0000”时,增加一天的时间(或86400秒)
解决方案2:将第一列用作字符串标签(只有在您的时间步长不变的情况下,x轴才会正确缩放)。为了娱乐,我添加了仅显示部分标签的可能性。
### time "without" date
reset session
$Data <<EOD
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
EOD
set multiplot layout 2,1
# solution 1: add extra day
set xdata time
set timefmt "%H%M"
set format x "%H%M"
extraday = 0
plot $Data u ($1==0000 ? extraday = extraday + 1 : 0, timecolumn(1)+extraday*86400):2 w lp lt 7 lc rgb "red" title "add extra day"
# solution 2: use timecolumn as xticlabel
Modulo(x,n) = x - floor(x/n)*n
plot $Data u 0:2:xticlabels(Modulo($1,200) == 0 ? stringcolumn(1) : "") w lp lt 7 lc rgb "green" title "timecolumn as xticlabel"
unset multiplot
### end of code
...将导致: