gnuplot xrange未被正确接受?

gnuplot xrange未被正确接受?,gnuplot,Gnuplot,我有一个大的(80MB+)输入文件,其中包含如下示例(第一列中的时间戳是UNIX历元,以毫秒为单位): 当使用以下脚本打印时: set terminal pngcairo enhanced font "arial,10" size 1024, 768; set key below; set grid; set xdata time; set timefmt "%H:%M:%S"; set format x "%H:%M:%S"; set datafile separator "\t"; set

我有一个大的(80MB+)输入文件,其中包含如下示例(第一列中的时间戳是UNIX历元,以毫秒为单位):

当使用以下脚本打印时:

set terminal pngcairo enhanced font "arial,10" size 1024, 768;
set key below;
set grid;

set xdata time;
set timefmt "%H:%M:%S";
set format x "%H:%M:%S";
set datafile separator "\t";
set xlabel "Time (UTC)";
set ylabel "seconds";

set datafile nofpe_trap;

plot "data.tsv" using ($1-946684800):6 with points linecolor rgbcolor "#EE0000" axes x1y1 title "plot 1";
生成以下图形:

但是当我在
plot
命令之前添加以下内容时:

set xrange ["10:00:00","11:00:00"]
我没有得到任何输出,出现以下错误:

gnuplot> plot "data.tsv" using ($1-946684800):6 with points linecolor rgbcolor "#EE0000" axes x1y1 title "plot 1";
                                                                                                                ^
     line 0: all points y value undefined!
我已经匹配了
timemt
,并且在这个范围内有明确的数据。那么是什么原因呢


注意:这是gnuplot 4.4,下图的轴标签错误,因为我最初在历元偏移量中漏掉了
8

当我提供数字时间戳作为范围时,这会起作用,尽管我的
timemt
看起来像人类可读的时间字符串:

set xrange [1444122000:1433928600]

问题是,“10:00:00”不是唯一定义的。如果没有给出日期、月份和年份,gnuplot 4.4将使用2000年1月1日,这不是您的数据所在的位置。但是我不是必须以
timemt
格式给出
xrange
?我的
timefmt
没有日期组件。如何解决这个问题?设置xrange是
set timemt
的唯一应用程序,因为在读取数据时,您明确地绕过了timemt设置。与此相反,您还可以以秒为单位给出x范围(自2000年1月1日起),就像您对x值所做的那样。@Christoph:ahhh这就是
$1
所做的,绕过
timemt
?我想我明白了。是的,我以为这很清楚。Ups:)我编辑了另一个答案,让它更清楚。我不会说这是假约会。数据集包含完整的日期时间信息(Unix时间戳),因此如果要指定要打印的范围,还必须为xrange限制提供完整的日期时间。gnuplot应该如何知道您所指的日期?如果您使用
timemt
来解析输入数据和设置xrange,那么您可以使用与输入数据相同的格式指定xrange是有意义的。@Christoph:对于只存储“HH:MM:SS”的不同日志文件,日期完全是人为的。答案/解决方案的这一部分有点无关紧要,因为问题是关于带有UNIX时间戳的文件。是的,如果日志文件只使用“HH:MM:SS”,您也不需要这个人工日期。这就是重点。@Christoph:好的,我明白了
set xrange [1444122000:1433928600]