grid.xspline
位于 grid
包(package)。 说明
这些函数创建并绘制 xspline,即相对于控制点绘制的曲线。
用法
grid.xspline(...)
xsplineGrob(x = c(0, 0.5, 1, 0.5), y = c(0.5, 1, 0.5, 0),
id = NULL, id.lengths = NULL,
default.units = "npc",
shape = 0, open = TRUE, arrow = NULL, repEnds = TRUE,
name = NULL, gp = gpar(), vp = NULL)
参数
x |
指定样条控制点x-locations的数值向量或单位对象。 |
y |
指定样条控制点y-locations的数值向量或单位对象。 |
id |
用于将 |
id.lengths |
用于将 |
default.units |
指示 |
shape |
值介于 -1 和 1 之间的数值向量,用于控制样条线相对于控制点的形状。 |
open |
指示样条线是直线还是闭合形状的逻辑值。 |
arrow |
说明要放置在 xspline 两端的箭头的列表,由 |
repEnds |
一个逻辑值,指示是否应复制第一个和最后一个控制点来绘制曲线(请参阅下面的详细信息)。 |
name |
字符标识符。 |
gp |
类 |
vp |
网格视口对象(或 NULL)。 |
... |
要传递给 |
细节
这两个函数都创建 xspline grob(说明 xspline 的图形对象),但只有 grid.xspline
绘制 xspline。
xspline 是相对于控制点绘制的线。对于每个控制点,直线可能穿过(插值)控制点,也可能仅接近(近似)控制点;行为由每个控制点的形状参数确定。
如果形状参数大于零,样条曲线将逼近控制点(当形状为 1 时,与三次方 B-spline 非常相似)。如果形状参数小于零,则样条曲线会对控制点进行插值(并且与形状为 -1 时的 Catmull-Rom 样条曲线非常相似)。如果形状参数为 0,则样条线在该控制点处形成尖角。
对于开放 x 样条线,起点和终点控制点的形状必须为 0(并且非零值会在不发出警告的情况下自动转换为零)。
对于开放 x 样条线,默认情况下,在绘制曲线之前实际上会复制起点和终点控制点。在每组四个控制点的第二个和第三个之间绘制一条曲线(插值或近似),因此此默认行为可确保生成的曲线从您指定的第一个控制点开始,到最后一个控制点结束。可以通过 repEnds
参数关闭默认行为,在这种情况下,绘制的曲线从(大约)第二个控制点开始,(大约)在第一个和倒数第二个控制点结束。
对于闭合 xsplines,repEnds
参数将被忽略。
x
和 y
不允许缺少值(即,缺少控制点是无效的)。
对于闭合 x 样条线,会在最终控制点和初始控制点之间自动绘制一条曲线。
值
一个抓取对象。
例子
x <- c(0.25, 0.25, 0.75, 0.75)
y <- c(0.25, 0.75, 0.75, 0.25)
xsplineTest <- function(s, i, j, open) {
pushViewport(viewport(layout.pos.col=j, layout.pos.row=i))
grid.points(x, y, default.units="npc", pch=16, size=unit(2, "mm"))
grid.xspline(x, y, shape=s, open=open, gp=gpar(fill="grey"))
grid.text(s, gp=gpar(col="grey"),
x=unit(x, "npc") + unit(c(-1, -1, 1, 1), "mm"),
y=unit(y, "npc") + unit(c(-1, 1, 1, -1), "mm"),
hjust=c(1, 1, 0, 0),
vjust=c(1, 0, 0, 1))
popViewport()
}
pushViewport(viewport(width=.5, x=0, just="left",
layout=grid.layout(3, 3, respect=TRUE)))
pushViewport(viewport(layout.pos.row=1))
grid.text("Open Splines", y=1, just="bottom")
popViewport()
xsplineTest(c(0, -1, -1, 0), 1, 1, TRUE)
xsplineTest(c(0, -1, 0, 0), 1, 2, TRUE)
xsplineTest(c(0, -1, 1, 0), 1, 3, TRUE)
xsplineTest(c(0, 0, -1, 0), 2, 1, TRUE)
xsplineTest(c(0, 0, 0, 0), 2, 2, TRUE)
xsplineTest(c(0, 0, 1, 0), 2, 3, TRUE)
xsplineTest(c(0, 1, -1, 0), 3, 1, TRUE)
xsplineTest(c(0, 1, 0, 0), 3, 2, TRUE)
xsplineTest(c(0, 1, 1, 0), 3, 3, TRUE)
popViewport()
pushViewport(viewport(width=.5, x=1, just="right",
layout=grid.layout(3, 3, respect=TRUE)))
pushViewport(viewport(layout.pos.row=1))
grid.text("Closed Splines", y=1, just="bottom")
popViewport()
xsplineTest(c(-1, -1, -1, -1), 1, 1, FALSE)
xsplineTest(c(-1, -1, 0, -1), 1, 2, FALSE)
xsplineTest(c(-1, -1, 1, -1), 1, 3, FALSE)
xsplineTest(c( 0, 0, -1, 0), 2, 1, FALSE)
xsplineTest(c( 0, 0, 0, 0), 2, 2, FALSE)
xsplineTest(c( 0, 0, 1, 0), 2, 3, FALSE)
xsplineTest(c( 1, 1, -1, 1), 3, 1, FALSE)
xsplineTest(c( 1, 1, 0, 1), 3, 2, FALSE)
xsplineTest(c( 1, 1, 1, 1), 3, 3, FALSE)
popViewport()
参考
Blanc, C. and Schlick, C. (1995), "X-splines : A Spline Model Designed for the End User", in Proceedings of SIGGRAPH 95, pp. 377-386. https://dept-info.labri.fr/~schlick/DOC/sig1.html
也可以看看
xspline
。
相关用法
- R grid.xaxis 绘制 X 轴
- R grid.curve 在位置之间绘制曲线
- R grid.draw 画一个网格
- R grid.stroke 描边或填充路径
- R grid.raster 渲染光栅对象
- R grid.points 绘制数据符号
- R grid.force 强制将一个对象放入其组件中
- R grid.display.list 控制网格显示列表
- R grid.show.viewport 绘制网格视口图
- R grid.segments 绘制线段
- R grid.frame 创建用于包装对象的框架
- R grid.group 画一个组
- R grid.pack 将对象打包在框架内
- R grid.text 绘制文字
- R grid.copy 制作网格图形对象的副本
- R grid.record 封装计算和绘图
- R grid.pretty 生成一组合理(“漂亮”)的断点
- R grid.grab 抓取当前电网输出
- R grid.show.layout 绘制网格布局图
- R grid.convert 不同网格坐标系之间的转换
- R grid.DLapply 修改网格显示列表
- R grid.delay 封装计算并生成grob
- R grid.polygon 绘制多边形
- R grid.function 绘制代表函数的曲线
- R grid.move.to 移动或绘制到指定位置
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Draw an Xspline。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。