为时间序列自定义Gnuplot X2轴年龄标签
在Gnuplot中为X2轴设置对应年龄标签
研究对象出生于1988-04-20,需要在图表的X2轴上显示其整数年龄,具体对应关系如下:
| X2轴标签 | 对应X1轴日期 |
|---|---|
| "18" | 2006-04-20 |
| "19" | 2007-04-20 |
| "20" | 2008-04-20 |
| "21" | 2009-04-20 |
原Gnuplot脚本
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;
修改后的脚本(实现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 birth_date = "1988-04-20"; set xdata time; set timefmt "%Y-%m-%d"; set xtics format "%Y-\n%m"; set x2label "年龄"; set ylabel "体重(磅)"; # 启用X2轴时间数据格式,手动绑定年龄标签与对应日期 set x2data time set x2tics ("18" timefmt("%Y-%m-%d", "2006-04-20"), \ "19" timefmt("%Y-%m-%d", "2007-04-20"), \ "20" timefmt("%Y-%m-%d", "2008-04-20"), \ "21" timefmt("%Y-%m-%d", "2009-04-20")) plot $Data using 1:2;
关键说明
- 通过
set x2data time让X2轴沿用X1轴的时间解析规则,保证日期匹配一致 - 用
set x2tics直接指定每个年龄标签对应的日期位置,timefmt()函数负责将字符串日期转换为Gnuplot可识别的时间值 - 同步将标签文本替换为中文,适配中文使用场景
内容的提问来源于stack exchange,提问作者William R. Greene -- 'Bill'
相关产品推荐
相关产品推荐

