我正在使用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似乎都没有任何搜索奖励。我错过了什么?
答案 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
给出
此处,计算2000年4月1日出生的人的年龄。