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