我试图通过两个单独的问题来解决我的一般问题:在 bs-call和Fit a B spline to a control path中指定夹紧的结向量。对这些问题的回应使我重新制定了更大的问题,我现在将其发布。
我想要完成的是(在 R 中),给定一组(非单调)控制点,我如何沿着控制点给出的路径绘制 b 样条曲线。b 样条必须在两端夹紧。这纯粹是出于图形目的。
注意:我不是要根据控制点来预测值。使用 和 的组合,predict
如将 B 样条曲线拟合到控制路径中所建议的那样,会导致 ab 样条曲线尝试通过控制点(这不是点) - 特别是如果设置或使样条曲线被钳位,这种方法导致过度拟合,样条将通过每个控制点。lm
bs
df
knots
最后,该方法将应用于 100 或 1000 组单独的控制点,因此算法效率是一个因素,尽管目前我只是在寻找一种方法来完成它。
玩具数据(与链接问题相同):
path <- data.frame(
x = c(3, 3.5, 4.6875, 9.625, 5.5625, 19.62109375, 33.6796875, 40.546875, 36.59375, 34.5, 33.5, 33),
y = c(0, 1, 4, 5, 6, 8, 7, 6, 5, 2, 1, 0)
)
所有这些都是为了在 R中计算Hierarchical Edge Bundles 。
编辑:
好的,所以我似乎无法访问在底层使用的底层 b 样条实现(或者我可能没有足够努力)。无论如何,我最终在Jason Yu-Tseh Chi的 de Boor 算法的启发下制作了自己的基于 Rcpp 的实现。这样做的好处是我可以将其矢量化,因此可以一次性构建多条路径。这将是即将推出的 CRAN 包(hierarchicalSets)的一部分,但我很乐意与任何对此表示兴趣的人分享它(太长,无法在此处发布)......
更新:
对于对此感兴趣的任何人,样条绘图将在ggforce扩展包中实现为 ggplot2 的 geom/stat 扩展