为什么gnuplot时间数据图中的常规x轴和x2轴之间存在差异?

为什么gnuplot时间数据图中的常规x轴和x2轴之间存在差异?,plot,gnuplot,Plot,Gnuplot,所以我注意到了一些我无法解释的事情。如果在gnuplot中x轴和x2轴上都有时间值,则相同的数据点不会对齐。让我用一个简单的工作示例来详细说明 我有两个数据文件: 一个是实际数据: # time1.dat - Some data: 1516205221 1 1516295221 2 "lbl1" 1516626421 3 "lbl2" 1518193566 4 "lbl3" 1518433621 5 "lbl4" 1518539166 6 1518599166 7

所以我注意到了一些我无法解释的事情。如果在gnuplot中x轴和x2轴上都有时间值,则相同的数据点不会对齐。让我用一个简单的工作示例来详细说明

我有两个数据文件:

一个是实际数据:

# time1.dat - Some data:
1516205221  1
1516295221  2   "lbl1"
1516626421  3   "lbl2"
1518193566  4   "lbl3"
1518433621  5   "lbl4"
1518539166  6
1518599166  7
其中一个带有一些数据点的标签:

# Some labels
1516295221  "label1"
1516626421  "label2"
1518193566  "label3"
1518433621  "label4"
每个文件中的第一列是unix epoch格式的时间(即1970年1月1日起的秒,00:00:00)。请注意,有些行在两个文件中具有相同的历元,例如,行

1516295221  2   "lbl1"
time1.dat中,dat
time2.dat中标记为
“label 1”
的行具有相同的历元

现在如果我跑

reset
set xdata time
set x2data time
set timefmt "%s" # epoch
set x2tics

set tics nomirror front; set yrange [0:]

plot \
    'time1.dat' using ($1):($2):($3) with labels offset 0, char 1 notitle, \
    'time1.dat' using ($1):($2) with points notitle, \
    'time2.dat' using ($1):(NaN):x2tic(2) notitle
我在下图中看到了不匹配。数据点“lbl1”应与xtic“label1”对齐(与“label2”相同)。但事实并非如此。这是为什么?如何解决此问题

我不确定这是错误还是预期行为,我只是缺少一个设置。

似乎:

set autoscale xfix
set autoscale x2fix
对于要对齐的
x
x2
轴而言,都是必需的


不知道为什么,但这是一个解决办法。但是,它还存在自动缩放带来的所有其他问题。我仍然希望找到一种解决方案,可以保留已经存在的范围和缩放。

x轴和x2轴是完全不相关的。它们有自己的范围、规模和方向。使用
set link
强制在这些轴之间建立固定关系

在您的情况下,只需使用
set link x2
x2
等效为
x

reset
set xdata time
set x2data time
set timefmt "%s" # epoch
set x2tics

set tics nomirror front; set yrange [0:]
set link x2
plot \
    'time1.dat' using ($1):($2):($3) with labels offset 0, char 1 notitle, \
    'time1.dat' using ($1):($2) with points notitle, \
    'time2.dat' using ($1):(NaN):x2tic(2) notitle

您可以将
设置xrange[:]
设置x2range[:]
xfix
x2fix
结合使用。还可以使用
stats
命令为给定文件设置动态
xrange