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