如何让gnuplot读取我的时间格式并按输入文件的顺序保存时间?
我试图让gnuplot(a)读取我的输入时间格式,(b)按照输入文件的顺序绘制时间。我试图绘制过去24小时内从18 UTC开始的数值变化 它似乎不喜欢:如何让gnuplot读取我的时间格式并按输入文件的顺序保存时间?,gnuplot,Gnuplot,我试图让gnuplot(a)读取我的输入时间格式,(b)按照输入文件的顺序绘制时间。我试图绘制过去24小时内从18 UTC开始的数值变化 它似乎不喜欢: set xdata time set timefmt "%H%M" 它还喜欢绘制从0000 UTC到2300 UTC的xaxis值,并删除前导零。请参阅下面的输入文件。我希望最新数据(本例中为1800UTC)位于xaxis的右侧。谢谢 1900 23 2000 22 2100 22 2200 22 2300 22 0000 22
set xdata time
set timefmt "%H%M"
它还喜欢绘制从0000 UTC到2300 UTC的xaxis值,并删除前导零。请参阅下面的输入文件。我希望最新数据(本例中为1800UTC)位于xaxis的右侧。谢谢
1900 23
2000 22
2100 22
2200 22
2300 22
0000 22
0100 22
0200 21
0300 21
0400 21
0500 21
等等…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
####没有日期的时间
重置会话
$Data您只能通过添加有关日期的附加信息来执行此操作:年、月、日。因为gnuplot不知道什么是“0000”,是第二天还是当前一天。