Grid
位于 grid
包(package)。 说明
这些函数创建视口,视口说明图形设备上的矩形区域并在这些区域内定义许多坐标系。
用法
viewport(x = unit(0.5, "npc"), y = unit(0.5, "npc"),
width = unit(1, "npc"), height = unit(1, "npc"),
default.units = "npc", just = "centre",
gp = gpar(), clip = "inherit", mask = "inherit",
xscale = c(0, 1), yscale = c(0, 1),
angle = 0,
layout = NULL,
layout.pos.row = NULL, layout.pos.col = NULL,
name = NULL)
vpList(...)
vpStack(...)
vpTree(parent, children)
参数
x |
指定 x-location 的数值向量或单位对象。 |
y |
指定 y-location 的数值向量或单位对象。 |
width |
指定宽度的数值向量或单位对象。 |
height |
指定高度的数值向量或单位对象。 |
default.units |
指示 |
just |
字符串或数字向量,指定视口相对于其 (x, y) 位置的对齐方式。如果有两个值,则第一个值指定水平对齐方式,第二个值指定垂直对齐方式。可能的字符串值为: |
gp |
类 |
clip |
也可能是说明剪切路径或调用 |
mask |
|
xscale |
长度为 2 的数字向量,指示 x-scale 上的最小值和最大值。限制可能不相同。 |
yscale |
长度为 2 的数字向量,指示 y-scale 上的最小值和最大值。限制可能不相同。 |
angle |
指示视口旋转角度的数值。正值表示从正 x 轴逆时针旋转的量(以度为单位)。 |
layout |
一个网格布局对象,它将视口分割成子区域。 |
layout.pos.row |
一个数字向量,给出此视口在其父级布局中占用的行数。 |
layout.pos.col |
一个数字向量,给出此视口在其父级布局中占用的列。 |
name |
将视口推送到视口树后,用于唯一标识视口的字符值。 |
... |
任意数量的网格视口对象。 |
parent |
网格视口对象。 |
children |
一个 vpList 对象。 |
细节
视口的位置和大小相对于该视口的父视口(图形设备或另一个视口)定义的坐标系。通过使用单元对象指定位置和大小,可以以非常灵活的方式指定它们。指定视口的位置时,将 layout.pos.row
和 layout.pos.col
指定为 NULL
表示视口忽略其父级的布局并指定其自己的位置和大小(通过其 locn
)。如果 layout.pos.row
和 layout.pos.col
中只有一个是 NULL
,这意味着占据所有适当的行/列。例如,layout.pos.row = 1
和 layout.pos.col = NULL
表示占据第 1 行的全部。为 layout.pos.row
和 layout.pos.col
指定非 NULL
值意味着占据相应行和列的交集。如果为 layout.pos.row
或 layout.pos.col
指定长度为 2 的向量,则表示要占用的行或列的范围。例如,layout.pos.row = c(1, 3)
和layout.pos.col = c(2, 4)
表示占据第1、2、3行和第2、3、4列交叉处的单元格。
剪裁仅遵循最新的视口剪裁设置。例如,如果您剪裁到视口 1,然后剪裁到视口 2,则剪裁区域完全由视口 2 决定,视口 1 的大小和形状无关紧要(当然,直到视口 2 弹出)。
如果旋转视口(由于其自身的 angle
设置或因为它位于另一个旋转的视口内),则忽略 clip
标志。
如果clip
是一个grob,那么该grob(可能是多个形状)定义了一个剪切路径。函数as.path
可用于指定路径的填充规则。
视口名称不必是唯一的。推送时,共享同一父级的视口必须具有唯一的名称,这意味着如果推送与现有视口同名的视口,现有视口将在视口树中被替换。视口名称可以是任何字符串,但网格使用顶级视口的保留名称"ROOT"
。此外,当在 downViewport
和 seekViewport
中指定视口名称时,可以提供视口路径,该路径由使用分隔符连接的多个名称组成(当前为 ::
)。因此,不建议在视口名称中使用此分隔符。
vpList
中的视口是并行推送的。 vpStack
中的视口按顺序推送。当 vpTree
被推送时,首先推送父级,然后并行推送子级。
值
类 viewport
的 R 对象。
例子
# Diagram of a sample viewport
grid.show.viewport(viewport(x=0.6, y=0.6,
width=unit(1, "inches"), height=unit(1, "inches")))
# Demonstrate viewport clipping
clip.demo <- function(i, j, clip1, clip2) {
pushViewport(viewport(layout.pos.col=i,
layout.pos.row=j))
pushViewport(viewport(width=0.6, height=0.6, clip=clip1))
grid.rect(gp=gpar(fill="white"))
grid.circle(r=0.55, gp=gpar(col="red", fill="pink"))
popViewport()
pushViewport(viewport(width=0.6, height=0.6, clip=clip2))
grid.polygon(x=c(0.5, 1.1, 0.6, 1.1, 0.5, -0.1, 0.4, -0.1),
y=c(0.6, 1.1, 0.5, -0.1, 0.4, -0.1, 0.5, 1.1),
gp=gpar(col="blue", fill="light blue"))
popViewport(2)
}
grid.newpage()
grid.rect(gp=gpar(fill="grey"))
pushViewport(viewport(layout=grid.layout(2, 2)))
clip.demo(1, 1, FALSE, FALSE)
clip.demo(1, 2, TRUE, FALSE)
clip.demo(2, 1, FALSE, TRUE)
clip.demo(2, 2, TRUE, TRUE)
popViewport()
# Demonstrate turning clipping off
grid.newpage()
pushViewport(viewport(width=.5, height=.5, clip="on"))
grid.rect()
grid.circle(r=.6, gp=gpar(lwd=10))
pushViewport(viewport(clip="inherit"))
grid.circle(r=.6, gp=gpar(lwd=5, col="grey"))
pushViewport(viewport(clip="off"))
grid.circle(r=.6)
popViewport(3)
# Demonstrate vpList, vpStack, and vpTree
grid.newpage()
tree <- vpTree(viewport(width=0.8, height=0.8, name="A"),
vpList(vpStack(viewport(x=0.1, y=0.1, width=0.5, height=0.5,
just=c("left", "bottom"), name="B"),
viewport(x=0.1, y=0.1, width=0.5, height=0.5,
just=c("left", "bottom"), name="C"),
viewport(x=0.1, y=0.1, width=0.5, height=0.5,
just=c("left", "bottom"), name="D")),
viewport(x=0.5, width=0.4, height=0.9,
just="left", name="E")))
pushViewport(tree)
for (i in LETTERS[1:5]) {
seekViewport(i)
grid.rect()
grid.text(current.vpTree(FALSE),
x=unit(1, "mm"), y=unit(1, "npc") - unit(1, "mm"),
just=c("left", "top"),
gp=gpar(fontsize=8))
}
作者
Paul Murrell
也可以看看
Grid、pushViewport
, popViewport
, downViewport
, seekViewport
, upViewport
, unit
, grid.layout
, grid.show.layout
。
相关用法
- R Grid 网格图形
- R grid.curve 在位置之间绘制曲线
- R legendGrob 构建一个图例 Grob
- R grid.draw 画一个网格
- R grid.stroke 描边或填充路径
- R viewportTransform 定义组转换
- R grid.raster 渲染光栅对象
- R showGrob 标签网格块
- R gridCoords 为网格对象创建坐标集
- R unit.pmin 并行单元最小值和最大值
- R grid.points 绘制数据符号
- R grid.force 强制将一个对象放入其组件中
- R grobCoords 计算 Grob 周长上的点
- R unit.rep 复制单元对象的元素
- R Working 维护和导航网格视口树
- R grid.display.list 控制网格显示列表
- R dataViewport 根据数据创建带有比例的视口
- R stringWidth 创建说明字符串或数学表达式的宽度和高度的单位
- R grid.show.viewport 绘制网格视口图
- R validDetails 自定义网格 grob 验证
- R grid.segments 绘制线段
- R grid.frame 创建用于包装对象的框架
- R gPath 连接 Grob 名称
- R calcStringMetric 计算文本的指标信息
- R grid.group 画一个组
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Create a Grid Viewport。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。