所以我注意到了一些我无法解释的事情。如果我在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开始的a.k.a.秒)。注意一些行如何在两个文件中具有相同的纪元,例如这条线
1516295221 2 "lbl1"
time1.dat
中的与"label 1"
中标有time2.dat
的行具有相同的纪元。
现在如果我跑
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")。但他们没有。为什么这样,我该如何解决这个问题?
我不确定这是一个错误或预期的行为,我只是错过了一个设置。
答案 0 :(得分:3)
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
答案 1 :(得分:1)
似乎:
set autoscale xfix
set autoscale x2fix
对于x
和x2
轴都是必需的。
不确定原因,但这是一个修复。但是,它具有自动缩放带来的所有其他问题。我仍然愿意采用一种解决方案来保留已经存在的范围和扩展。