如何';设置链接';在gnuplot 5中,轴是否以时间格式显示原始轴的年龄?
我使用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似乎都没有任何搜索回报。我遗漏
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
进行这些计算