在R中构建弯曲对象

时间:2014-10-14 16:47:36

标签: r

我想弄清楚如何在R中构建复杂的曲线/多边形。我们可以轻松地绘制一条简单的贝塞尔线,例如。

require(grid)
x <- c(0.25, 0.25, 0.75, 0.75)
y <- c(0.25, 0.75, 0.75, 0.25)
grid.newpage()
grid.bezier(x, y)

enter image description here

这个方法似乎在两个轴上按比例约束为0-1,我不确定如何在自定义比例下构建贝塞尔曲线。我也不清楚R如何将这些bezier对象一起绑定到折线和最终的多边形中。如果有人能提供一个最小的例子,我将非常感激。但另外,文档正确方向的一个点会有很大帮助,因为到目前为止我还没有找到工作流程。提前谢谢。

2 个答案:

答案 0 :(得分:1)

据我了解grid.bezier,您必须将个别细分链接起来。这可以通过id参数完成,但另请参阅?grig.bezier

您可以通过viewportsxscale以及yscale来调整比例。

library(grid)
x <- c(0.2, 0.2, 0.7, 0.4, 0.2, 0.2, 0.4, 0.4)
y <- c(0.2, 0.4, 0.7, 0.2, 0.2, 0, 0, 0.2)

grid.newpage()
grid.bezier(x, y, id=rep(1:2, each=4))

grid.newpage()
pushViewport(plotViewport(xscale=c(0, 10), yscale=c(0, 100)))
grid.xaxis()
grid.yaxis()

x <- x * 10
y <- y * 50

grid.bezier(x, y, id=rep(1:2, each=4), default.units="native")

请注意,我使用了dataViewport,这只是一个包含viewport的便捷功能。

答案 1 :(得分:-1)

如果您要绘制曲线的参数化“Y”,则可以

t <- c(1:1000)*0.001
plot(t,Y(t))    

或类似的东西。