如何设置链接'一个轴在gnuplot 5中以时间格式显示原始轴的年龄?

时间:2018-01-10 03:15:43

标签: gnuplot

我正在使用gnuplot 5'设置链接'制作双轴。

我已成功地将磅数和千克数与:

联系起来
set y2tics rotate by -45 right offset 1,0
set link y2 via y*0.45 inverse y/0.45

x轴的timefmt为%m/%d/%Y。我希望x2能够显示正在绘制的人的年龄,并存储在birthyear中。我如何set link x2这样我可以抓住时间部分并减去birthyear来映射?什么是相反的部分(特别是因为我没有计划对x2进行绘图)。

gnuplot 5 docs和' net似乎都没有任何搜索奖励。我错过了什么?

1 个答案:

答案 0 :(得分:1)

内部gnuplot将日期存储为自1970年1月1日以来的秒数。因此,可以通过简单的减法来计算两个日期之间的年龄[以秒为单位]。由于闰年,将该数字转换为年龄会更加复杂,但如果您不关心总体准确度,则可以假设每年为365.25 * 24 * 60 * 60秒。

假设您有一个类似于

的数据文件test.dat
1/1/2015        1
4/1/2015        2
7/1/2015        1
10/1/2015       2
1/1/2016        1
4/1/2016        2
7/1/2016        1
10/1/2016       2
1/1/2017        1
4/1/2017        2
7/1/2017        1
10/1/2017       2

然后是gnuplot代码

set xdata time
set timefmt "%m/%d/%Y"
set xtics nomirror
set xlabel "Date"

birthdate="4/1/2000"
birthdate_in_seconds = strptime("%m/%d/%Y",birthdate)
seconds_in_year=365.25*24*60*60.
set link x2 via (x-birthdate_in_seconds)/seconds_in_year inverse (seconds_in_year*x)+birthdate_in_seconds
set x2tics 1
set x2label "Age"

set grid x
plot "test.dat" u 1:2 w lp

给出

enter image description here

此处,计算2000年4月1日出生的人的年龄。