计算R中的2D样条曲线

马克在盒子里

我正在尝试计算通过一系列xy坐标的类似Bezier的样条曲线。一个示例类似于cscvnMatlab中函数的以下输出example link):

在此处输入图片说明

我相信(不再维护)grid用于执行此操作(grid.xspline功能?)的软件包,但我无法安装该软件包的存档版本,也找不到与我想要的内容完全相同的任何示例。

bezier程序包看起来也很有前途,但速度非常慢,我也无法完全正确:

library(bezier)

set.seed(1)
n <- 10
x <- runif(n)
y <- runif(n)
p <- cbind(x,y)
xlim <- c(min(x) - 0.1*diff(range(x)), c(max(x) + 0.1*diff(range(x))))
ylim <- c(min(y) - 0.1*diff(range(y)), c(max(y) + 0.1*diff(range(y))))
plot(p, xlim=xlim, ylim=ylim)
text(p, labels=seq(n), pos=3)

bp <- pointsOnBezier(cbind(x,y), n=100)
lines(bp$points)
arrows(bp$points[nrow(bp$points)-1,1], bp$points[nrow(bp$points)-1,2],
  bp$points[nrow(bp$points),1], bp$points[nrow(bp$points),2]
)

在此处输入图片说明

如您所见,除最终值外,它不经过任何点。

我将不胜感激这里的一些指导!

弗里克先生

它可能不是最好的方法,但grid肯定不是不活跃的。它是R安装中的默认软件包。它是用于绘制诸如点阵图和ggplot之类的库的基础图形引擎。您不需要安装它,只需加载它即可。这是我可能会翻译您的代码以供使用的方法grid.xpline

set.seed(1)
n <- 10
x <- runif(n)
y <- runif(n)
xlim <- c(min(x) - 0.1*diff(range(x)), c(max(x) + 0.1*diff(range(x))))
ylim <- c(min(y) - 0.1*diff(range(y)), c(max(y) + 0.1*diff(range(y))))

library(grid)
grid.newpage()
pushViewport(viewport(xscale=xlim, yscale=ylim))
grid.points(x, y, pch=16, size=unit(2, "mm"), 
    default.units="native")
grid.text(seq(n), x,y, just=c("center","bottom"), 
    default.units="native")
grid.xspline(x, y, shape=c(0,rep(-1, 10-2),0), open=TRUE, 
    default.units="native")
popViewport()

导致

在此处输入图片说明

请注意,网格是非常低级的,因此使用起来并非易事,但它确实允许您更好地控制绘制的内容和位置。

而且,如果您想沿曲线提取点而不是绘制曲线,请查看?xsplinePoints帮助页面。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获得R中的样条曲线公式?

来自分类Dev

如何以恒定的“下降率”从预定义的2D(xz)线段中构建3D贝塞尔曲线样条线?

来自分类Dev

使用D3计算样条曲线以进行重采样

来自分类Dev

从样条曲线计算斜率值

来自分类Dev

在python中区分2d三次样条

来自分类Dev

从R中的插值样条曲线获取多项式系数

来自分类Dev

ggplot计算中的ROC曲线[r]

来自分类Dev

使用Matplotlib在3D中绘制多个2D曲线

来自分类Dev

使用Matplotlib在3D中绘制多个2D曲线

来自分类Dev

根据R中的2D密度图计算值的概率

来自分类Dev

如何在2D阵列中检测曲线形状的簇?蟒蛇

来自分类Dev

2D数组中2点之间的计算

来自分类Dev

xyplot R中平滑/样条曲线的实际值

来自分类Dev

在Matlab中实现三次样条曲线

来自分类Dev

在样条曲线中查找控制点顺序

来自分类Dev

2D条件计算

来自分类Dev

2D RMS计算

来自分类Dev

计算2D阵列中的出现次数

来自分类Dev

计算Java中多个2D形状的交集

来自分类Dev

计算2D平面中黑白形状的大小

来自分类Dev

计算2D char数组中单词的出现

来自分类Dev

PHP计算2D数组中的每个排列

来自分类Dev

在R中创建2D仓

来自分类Dev

查找2D曲线的双切线的算法

来自分类Dev

将 2D 点投影到圆/曲线上

来自分类Dev

如何从Scipys SmoothBivariateSpline给出的一组结和系数计算样条曲线值

来自分类Dev

R中的平滑样条曲线中的“使用非唯一的“ x”值进行交叉验证似乎令人怀疑”是什么意思?

来自分类Dev

R中的平滑样条曲线中的“使用非唯一的“ x”值进行交叉验证似乎令人怀疑”是什么意思?

来自分类Dev

R中的累积曲线