2025-01-12 04:36:52 +08:00

289 lines
8.7 KiB
R

### R code from vignette source 'viewports.Rnw'
###################################################
### code chunk number 1: viewports.Rnw:26-31
###################################################
library(grDevices)
library(stats) # for runif()
library(grid)
ps.options(pointsize = 12)
options(width = 60)
###################################################
### code chunk number 2: viewports.Rnw:50-53
###################################################
pushViewport(viewport())
upViewport()
pushViewport(viewport())
###################################################
### code chunk number 3: viewports.Rnw:68-70
###################################################
grid.newpage()
###################################################
### code chunk number 4: viewports.Rnw:71-76
###################################################
pushViewport(viewport(name = "A"))
upViewport()
pushViewport(viewport(name = "B"))
upViewport()
downViewport("A")
###################################################
### code chunk number 5: viewports.Rnw:85-86
###################################################
seekViewport("B")
###################################################
### code chunk number 6: viewports.Rnw:91-93
###################################################
current.vpTree()
###################################################
### code chunk number 7: vpstackguts
###################################################
vp <- viewport(width = 0.5, height = 0.5)
grid.rect(vp = vpStack(vp, vp))
###################################################
### code chunk number 8: viewports.Rnw:114-116
###################################################
grid.rect(gp = gpar(col = "grey"))
vp <- viewport(width = 0.5, height = 0.5)
grid.rect(vp = vpStack(vp, vp))
###################################################
### code chunk number 9: viewports.Rnw:140-142
###################################################
grid.newpage()
###################################################
### code chunk number 10: viewports.Rnw:143-146
###################################################
pushViewport(viewport(name = "A"))
pushViewport(viewport(name = "B"))
pushViewport(viewport(name = "A"))
###################################################
### code chunk number 11: viewports.Rnw:152-154
###################################################
seekViewport("A")
current.vpTree(FALSE)
###################################################
### code chunk number 12: viewports.Rnw:159-161
###################################################
seekViewport(vpPath("B", "A"))
current.vpTree(FALSE)
###################################################
### code chunk number 13: viewports.Rnw:166-167
###################################################
vpPath("A", "B")
###################################################
### code chunk number 14: viewports.Rnw:174-176 (eval = FALSE)
###################################################
## seekViewport(vpPath("A", "B"))
## seekViewport("A::B")
###################################################
### code chunk number 15: viewports.Rnw:185-187
###################################################
x <- runif(10)
y <- runif(10)
###################################################
### code chunk number 16: viewports.Rnw:192-194
###################################################
xscale <- extendrange(x)
yscale <- extendrange(y)
###################################################
### code chunk number 17: viewports.Rnw:203-208
###################################################
top.vp <-
viewport(layout=grid.layout(3, 3,
widths=unit(c(5, 1, 2), c("lines", "null", "lines")),
heights=unit(c(5, 1, 4), c("lines", "null", "lines"))))
###################################################
### code chunk number 18: viewports.Rnw:209-210
###################################################
grid.show.layout(viewport.layout(top.vp))
###################################################
### code chunk number 19: viewports.Rnw:217-227
###################################################
margin1 <- viewport(layout.pos.col = 2, layout.pos.row = 3,
name = "margin1")
margin2 <- viewport(layout.pos.col = 1, layout.pos.row = 2,
name = "margin2")
margin3 <- viewport(layout.pos.col = 2, layout.pos.row = 1,
name = "margin3")
margin4 <- viewport(layout.pos.col = 3, layout.pos.row = 2,
name = "margin4")
plot <- viewport(layout.pos.col = 2, layout.pos.row = 2,
name = "plot", xscale = xscale, yscale = yscale)
###################################################
### code chunk number 20: viewports.Rnw:234-235
###################################################
splot <- vpTree(top.vp, vpList(margin1, margin2, margin3, margin4, plot))
###################################################
### code chunk number 21: viewports
###################################################
pushViewport(splot)
###################################################
### code chunk number 22: grid (eval = FALSE)
###################################################
## labelvp <- function(name) {
## seekViewport(name)
## grid.rect(gp = gpar(col = "grey", lwd = 5))
## grid.rect(x = 0, y = 1, width = unit(1, "strwidth", name) + unit(2, "mm"),
## height = unit(1, "lines"), just = c("left", "top"),
## gp = gpar(fill = "grey", col = NULL))
## grid.text(name, x = unit(1, "mm"), y = unit(1, "npc") - unit(1, "mm"),
## just = c("left", "top"), gp = gpar(col = "white"))
## }
## labelvp("plot")
## labelvp("margin1")
## labelvp("margin2")
## labelvp("margin3")
## labelvp("margin4")
###################################################
### code chunk number 23: plot (eval = FALSE)
###################################################
## seekViewport("plot")
## grid.points(x, y)
## grid.xaxis()
## grid.yaxis()
## grid.rect()
###################################################
### code chunk number 24: margin1 (eval = FALSE)
###################################################
## seekViewport("margin1")
## grid.text("Random X", y = unit(1, "lines"))
###################################################
### code chunk number 25: margin2 (eval = FALSE)
###################################################
## seekViewport("margin2")
## grid.text("Random Y", x = unit(1, "lines"), rot = 90)
##
###################################################
### code chunk number 26: viewports.Rnw:287-293
###################################################
pushViewport(viewport(w = 0.9, h = 0.9))
pushViewport(splot)
labelvp <- function(name) {
seekViewport(name)
grid.rect(gp = gpar(col = "grey", lwd = 5))
grid.rect(x = 0, y = 1, width = unit(1, "strwidth", name) + unit(2, "mm"),
height = unit(1, "lines"), just = c("left", "top"),
gp = gpar(fill = "grey", col = NULL))
grid.text(name, x = unit(1, "mm"), y = unit(1, "npc") - unit(1, "mm"),
just = c("left", "top"), gp = gpar(col = "white"))
}
labelvp("plot")
labelvp("margin1")
labelvp("margin2")
labelvp("margin3")
labelvp("margin4")
seekViewport("plot")
grid.points(x, y)
grid.xaxis()
grid.yaxis()
grid.rect()
seekViewport("margin1")
grid.text("Random X", y = unit(1, "lines"))
seekViewport("margin2")
grid.text("Random Y", x = unit(1, "lines"), rot = 90)
###################################################
### code chunk number 27: viewports.Rnw:307-308
###################################################
upViewport(0)
###################################################
### code chunk number 28: annguts (eval = FALSE)
###################################################
## seekViewport("margin3")
## grid.text("The user adds a title!", gp = gpar(fontsize = 20))
##
###################################################
### code chunk number 29: viewports.Rnw:325-333
###################################################
pushViewport(viewport(w = 0.9, h = 0.9))
pushViewport(splot)
labelvp <- function(name) {
seekViewport(name)
grid.rect(gp = gpar(col = "grey", lwd = 5))
grid.rect(x = 0, y = 1, width = unit(1, "strwidth", name) + unit(2, "mm"),
height = unit(1, "lines"), just = c("left", "top"),
gp = gpar(fill = "grey", col = NULL))
grid.text(name, x = unit(1, "mm"), y = unit(1, "npc") - unit(1, "mm"),
just = c("left", "top"), gp = gpar(col = "white"))
}
labelvp("plot")
labelvp("margin1")
labelvp("margin2")
labelvp("margin3")
labelvp("margin4")
seekViewport("plot")
grid.points(x, y)
grid.xaxis()
grid.yaxis()
grid.rect()
seekViewport("margin1")
grid.text("Random X", y = unit(1, "lines"))
seekViewport("margin2")
grid.text("Random Y", x = unit(1, "lines"), rot = 90)
seekViewport("margin3")
grid.text("The user adds a title!", gp = gpar(fontsize = 20))
popViewport(0)