grid.group
位于 grid
包(package)。 说明
这些函数定义并绘制一个或多个团体,其中组是在与主图像组合之前单独绘制的一个对象。组的概念允许组合运算符、对象重用和仿射变换(请参阅详细信息部分)。
用法
groupGrob(src, op = "over", dst = NULL, coords = TRUE,
name = NULL, gp=gpar(), vp=NULL)
grid.group(src, op = "over", dst = NULL, coords = TRUE,
name = NULL, gp=gpar(), vp=NULL)
defineGrob(src, op = "over", dst = NULL, coords = TRUE,
name = NULL, gp=gpar(), vp=NULL)
grid.define(src, op = "over", dst = NULL, coords = TRUE,
name = NULL, gp=gpar(), vp=NULL)
useGrob(group, transform=viewportTransform,
name=NULL, gp=gpar(), vp=NULL)
grid.use(group, transform=viewportTransform,
name=NULL, gp=gpar(), vp=NULL)
参数
src |
一个杂种。 |
op |
合成运算符的名称(请参阅详细信息)。 |
dst |
一个杂种。 |
coords |
指示是否应为组计算 grob 坐标的逻辑。 |
group |
参考已定义组的名称标识的字符。 |
transform |
返回仿射变换矩阵的函数;请参阅 |
name |
字符标识符。 |
gp |
类 |
vp |
网格视口对象(或 NULL)。 |
细节
在最简单的用法中,我们可以使用grid.group()
指定一个在与主图像组合之前要单独绘制的grob。例如,如果对象绘制了多个形状并且当前有一个有效的遮罩,则这可能与正常绘制不同。
另一种可能的用途是grid.group()
是指定两者src
和dst
并使用默认的合成运算符将它们组合起来"over"
,然后将结果与主图像组合。例如,如果我们使用"dest.out"
那么运算符dst
仅在不重叠的地方绘制src
。以下(扩展)Porter-Duff 运算符可用:"clear"
,"source"
,"over"
,"in"
,"out"
,"atop"
,"dest"
,"dest.over"
,"dest.in"
,"dest.out"
,"dest.atop"
,"xor"
,"add"
, 和"saturate"
。此外,还有与PDF混合模式对应的运算符:"multiply"
,"screen"
,"overlay"
,"darken"
,"lighten"
,"color.dodge"
,"color.burn"
,"hard.light"
,"soft.light"
,"difference"
, 和"exclusion"
。然而,即使图形设备支持组,它也可能不支持所有的合成运算符;看dev.capabilities
.
也可以将过程分为两个步骤,首先使用 grid.define()
定义组,然后使用 grid.use()
绘制组。这允许重复使用组(定义一次组并使用多次)。
如果在一个视口中定义一组并在不同视口中使用,则会应用隐式变换。这可能是一个简单的转换(如果视口位于不同位置,但大小相同),或者如果视口也具有不同大小或处于不同方向,则可能会更复杂。
注意:转换发生在图形设备上,因此会影响绘图的各个方面。例如,文本和线宽以及位置都会被转换。
有关转换以及如何自定义转换的更多信息,请参阅viewportTransform
。
并非所有图形设备都支持这些函数:例如xfig
和pictex
不支持。对于确实提供支持的设备,该支持可能只是部分的(例如,基于开罗的设备比 pdf()
设备支持更多的合成运算符)。
值
一个抓取对象。
例子
## NOTE: on devices without support for groups (or masks or patterns),
## there will only be two overlapping opaque circles
grid.newpage()
pat <- pattern(rasterGrob(matrix(c(.5, 1, 1, .5), nrow=2),
width=unit(1, "cm"),
height=unit(1, "cm"),
interpolate=FALSE),
width=unit(1, "cm"), height=unit(1, "cm"),
extend="repeat")
grid.rect(gp=gpar(col=NA, fill=pat))
masks <- dev.capabilities()$masks
if (is.character(masks) && "luminance" %in% masks) {
mask <- as.mask(rectGrob(gp=gpar(col=NA, fill="grey50")), type="luminance")
} else {
mask <- rectGrob(gp=gpar(col=NA, fill=rgb(0,0,0,.5)))
}
pushViewport(viewport(mask=mask))
pushViewport(viewport(y=.5, height=.5, just="bottom"))
grid.circle(1:2/3, r=.45, gp=gpar(fill=2:3))
popViewport()
pushViewport(viewport(y=0, height=.5, just="bottom"))
grid.group(circleGrob(1:2/3, r=.45, gp=gpar(fill=2:3)))
popViewport()
作者
Paul Murrell
也可以看看
相关用法
- R grid.grob 创建网格图形对象,又名“Grob”
- R grid.grab 抓取当前电网输出
- R grid.grill 画一个烤架
- R grid.grep 搜索 Grob 和/或视口
- R grid.glyph 绘制排版字形
- R grid.get 获取网格图形对象
- 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.pack 将对象打包在框架内
- R grid.text 绘制文字
- R grid.xspline 绘制 X 样条线
- R grid.copy 制作网格图形对象的副本
- R grid.record 封装计算和绘图
- R grid.pretty 生成一组合理(“漂亮”)的断点
- R grid.show.layout 绘制网格布局图
- R grid.convert 不同网格坐标系之间的转换
- R grid.DLapply 修改网格显示列表
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Draw a Group。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。