當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。