为什么gnuplot时间数据图中的常规x轴和x2轴之间存在差异?
所以我注意到了一些我无法解释的事情。如果在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
# 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
。