当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R grid.curve 在位置之间绘制曲线


R语言 grid.curve 位于 grid 包(package)。

说明

这些函数创建并绘制从一个位置到另一个位置的曲线。

用法

grid.curve(...)
curveGrob(x1, y1, x2, y2, default.units = "npc",
          curvature = 1, angle = 90, ncp = 1, shape = 0.5,
          square = TRUE, squareShape = 1,
          inflect = FALSE, arrow = NULL, open = TRUE,
          debug = FALSE,
          name = NULL, gp = gpar(), vp = NULL)
arcCurvature(theta)

参数

x1

指定起始点 x-location 的数值向量或单位对象。

y1

指定起始点 y-location 的数值向量或单位对象。

x2

指定终点x-location的数值向量或单位对象。

y2

指定终点y-location的数值向量或单位对象。

default.units

一个字符串,指示仅以数值形式给出 x1y1x2y2 时使用的默认单位。

curvature

给出曲率量的数值。负值产生左手曲线,正值产生右手曲线,零产生直线。

angle

0 到 180 之间的数值,给出曲线控制点的倾斜量。小于 90 的值使曲线向起点倾斜,大于 90 的值使曲线向终点倾斜。

ncp

用于绘制曲线的控制点的数量。更多控制点可创建更平滑的曲线。

shape

由 -1 到 1 之间的值组成的数值向量,用于控制曲线相对于其控制点的形状。有关更多详细信息,请参阅grid.xspline

square

控制是否以 city-block 方式或倾斜方式创建曲线控制点的逻辑值。当 ncp 为 1 并且 angle 为 90 时,这通常是 TRUE ,否则可能应设置为 FALSE (请参见下面的示例)。

squareShape

shape 值,用于控制曲线相对于在 squareTRUE 时插入的任何其他控制点的行为。

inflect

一个逻辑值,指定曲线是否应切成两半并反转(请参见下面的示例)。

arrow

说明放置在曲线两端的箭头的列表,由 arrow 函数生成。

open

一个逻辑值,指示是否闭合曲线(连接起点和终点)。

debug

指示是否应绘制调试信息的逻辑值。

name

字符标识符。

gp

"gpar" 的对象,通常是调用函数 gpar 的输出。这本质上是图形参数设置的列表。

vp

网格视口对象(或 NULL)。

...

要传递给 curveGrob 的参数。

theta

角度(以度为单位)。

细节

这两个函数都创建一个曲线grob(说明曲线的图形对象),但只有grid.curve绘制曲线。

arcCurvature函数可用于计算curvature,从而在与角度theta对应的圆弧上生成控制点。这通常与大型 ncp 结合使用,以生成与所需弧线相对应的曲线。

一个抓取对象。

例子

curveTest <- function(i, j, ...) {
  pushViewport(viewport(layout.pos.col=j, layout.pos.row=i))
  do.call("grid.curve", c(list(x1=.25, y1=.25, x2=.75, y2=.75), list(...)))
  grid.text(sub("list\\((.*)\\)", "\\1",
                deparse(substitute(list(...)))),
            y=unit(1, "npc"))
  popViewport()
}
# grid.newpage()
pushViewport(plotViewport(c(0, 0, 1, 0),
                          layout=grid.layout(2, 1, heights=c(2, 1))))
pushViewport(viewport(layout.pos.row=1,
                      layout=grid.layout(3, 3, respect=TRUE)))
curveTest(1, 1)
curveTest(1, 2, inflect=TRUE)
curveTest(1, 3, angle=135)
curveTest(2, 1, arrow=arrow())
curveTest(2, 2, ncp=8)
curveTest(2, 3, shape=0)
curveTest(3, 1, curvature=-1)
curveTest(3, 2, square=FALSE)
curveTest(3, 3, debug=TRUE)
popViewport()
pushViewport(viewport(layout.pos.row=2,
                      layout=grid.layout(3, 3)))
curveTest(1, 1)
curveTest(1, 2, inflect=TRUE)
curveTest(1, 3, angle=135)
curveTest(2, 1, arrow=arrow())
curveTest(2, 2, ncp=8)
curveTest(2, 3, shape=0)
curveTest(3, 1, curvature=-1)
curveTest(3, 2, square=FALSE)
curveTest(3, 3, debug=TRUE)
popViewport(2)

也可以看看

Gridviewportgrid.xsplinearrow

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Draw a Curve Between Locations。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。