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


R grid.group 画一个组


R语言 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

返回仿射变换矩阵的函数;请参阅viewportTransform

name

字符标识符。

gp

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

vp

网格视口对象(或 NULL)。

细节

在最简单的用法中,我们可以使用grid.group()指定一个在与主图像组合之前要单独绘制的grob。例如,如果对象绘制了多个形状并且当前有一个有效的遮罩,则这可能与正常绘制不同。

另一种可能的用途是grid.group()是指定两者srcdst并使用默认的合成运算符将它们组合起来"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

并非所有图形设备都支持这些函数:例如xfigpictex 不支持。对于确实提供支持的设备,该支持可能只是部分的(例如,基于开罗的设备比 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

也可以看看

grid Grid

相关用法


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