我要显示其数据的主题出生于1988-04-20。
我想让 X2 轴显示主体的积分年龄:
| x2 label | Corresponding x1 value |
|----------+------------------------|
| "18" | 2006-04-20 |
| "19" | 2007-04-20 |
| "20" | 2008-04-20 |
| "21" | 2009-04-20 |
脚本:
reset session;
$Data <<EOD
2006-03-24 150
2007-01-12 147
2007-11-12 149
2007-11-15 142
2008-03-29 166
2008-12-16 173
2009-05-06 170
EOD
birth_date = "1988-04-20";
set xdata time;
set timefmt "%Y-%m-%d";
set xtics format "%Y-\n%m";
set x2label "Age";
set ylabel "Weight (lbs.)";
plot $Data using 1:2;
有两种绘制时间数据的方法,我通常更喜欢第二种方法。
set xdata time
set timefmt "%Y-%m-%d"
set format x "%Y\n%m"
plot $Data u 1:2
或
myFmt = "%Y-%m-%d"
set format x "%Y\n%m" timedate
plot $Data u (timecolumn(1,myFmt)):2
此外,您可以链接x和x2轴,勾选
help link
。我想第二种方法可能会更容易(实际上,还没有尝试第一种方法)。
如需进一步阅读,请查看
help time/date
、help timecolumn
和 help strptime
。
脚本:
### plotting date on x1 and age on x2
reset session
$Data <<EOD
2006-03-24 150
2007-01-12 147
2007-11-12 149
2007-11-15 142
2008-03-29 166
2008-12-16 173
2009-05-06 170
EOD
myFmt = "%Y-%m-%d"
birth_date = strptime(myFmt, "1988-04-20")
set format x "%Y\n%m" timedate
set xtics nomirror
set x2tics numeric
set x2label "Age"
set ylabel "Weight (lbs.)"
SecsPerYear = 3600*24*365.25
set link x2 via (x-birth_date)/SecsPerYear inverse (x*SecsPerYear+birth_date)
set x2tics 0.5 nomirror
set key noautotitle
set grid x,y
plot $Data u (timecolumn(1,myFmt)):2 w lp pt 7
### end of script
结果: