样条函数基绘图:添加节点位置标记的优化方案咨询
简洁展示样条节点位置的方案
我完全懂你说的痛点——节点多的时候用竖线标记确实会把图弄得乱糟糟的,用小"x"标记节点是个清爽太多的选择。这里有个简单易实现的方案,既能清晰标注所有节点位置,又不会干扰基函数曲线的展示:
改进后的代码示例
library(splines) # 生成数据与样条基函数 x <- seq(0, 1, length.out=1000) knots <- seq(0, 1, length=20)[-c(1, 20)] # 提取内部节点 B <- bs(x, knots=knots, Boundary.knots=c(0, 1), degree=2) # 绘制基函数曲线 matplot(x, B, type="l", lty=1, col="red", ylab="Basis Functions", xlab="x") # 在绘图区域底部添加整齐的节点标记(小"x") points(knots, rep(par("usr")[3], length(knots)), pch="x", col="blue", cex=0.8) # 要是想把标记放在顶部,把par("usr")[3]换成par("usr")[4]就行
代码细节说明
par("usr")[3]会自动获取当前绘图区域的底部y坐标,这样所有节点标记都会整齐对齐在图的最下方,完全不会和曲线重叠- 用
pch="x"指定标记形状,cex=0.8缩小标记尺寸,避免过于突兀;选蓝色(和红色曲线形成对比),既能看清节点,又不会抢曲线的风头 - 如果觉得底部标记还是有点靠近曲线,可以稍微往下挪一点,比如用
par("usr")[3] - 0.05*(par("usr")[4]-par("usr")[3])作为y坐标
内容的提问来源于stack exchange,提问作者Chaos
相关产品推荐
相关产品推荐

