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

如何';设置链接';在gnuplot 5中,轴是否以时间格式显示原始轴的年龄?,gnuplot,Gnuplot,我使用gnuplot 5“设置链接”来制作双轴 我已经成功地将磅和公斤与: set y2tics rotate by -45 right offset 1,0 set link y2 via y*0.45 inverse y/0.45 x轴的时间mt为%m/%d/%Y。我想用x2显示被绘制人的年龄,存储在出生年份中。如何设置链接x2,以便通过抓取时间的年份部分并减去出生年份来映射?相反的部分是什么(特别是我不打算针对x2进行绘图) gnuplot 5文档和'net似乎都没有任何搜索回报。我遗漏

我使用gnuplot 5“设置链接”来制作双轴

我已经成功地将磅和公斤与:

set y2tics rotate by -45 right offset 1,0
set link y2 via y*0.45 inverse y/0.45
x轴的时间mt为
%m/%d/%Y
。我想用x2显示被绘制人的年龄,存储在
出生年份
中。如何
设置链接x2
,以便通过抓取时间的年份部分并减去
出生年份来映射?相反的部分是什么(特别是我不打算针对x2进行绘图)


gnuplot 5文档和'net似乎都没有任何搜索回报。我遗漏了什么?

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
给予


这里,年龄是为2000年4月1日出生的人计算的

如果这不够精确,可以使用
tm\u*
函数,如
tm\u year
进行这些计算