我有一个包含多行expression()
语句的点阵图。我想微调这个语句的行之间的垂直空间。有没有办法做到这一点?
以下是演示此问题的代码:
library(devtools)
library(grid)
library(lattice)
source_gist(2732693) # source grid.expr()
# PANEL FUNCTIONS
myPanel1 <- function () {
grid.text(
label = expression(atop("This is", paste("italicized ", italic(F))),
gp = gpar(lineheight = 5)))
}
myPanel2 <- function () {
grid.expr(
as.expression(
list("This is", bquote(paste("italicized ", italic(F))))),
gp = gpar(lineheight = 5))
}
# DRAW THE FIGURES
xyplot(1 ~ 1, panel = myPanel1)
xyplot(1 ~ 1, panel = myPanel2)
此代码提供了两种在格子图中创建多行expression()
语句的方法。但是在这两种情况下都忽略了gp
参数,我没有看到调整表达式中行的垂直间距的方法。有没有办法做到这一点,没有“手动”定位行,每行有一个单独的grid.text
或grid.expr
命令?
答案 0 :(得分:1)
你可以试试gtable
library(gtable)
library(grid)
grid.expr <- function(labels, ...,
width=NULL, heights=NULL,
margin=unit(0.5,"line")){
gl <- lapply(labels, textGrob, ...)
if(is.null(heights))
heights <- do.call(unit.c, lapply(gl, grobHeight)) + margin
widths <- do.call(max, lapply(gl, grobWidth))
gt <- gtable_matrix("table", grobs = matrix(gl,ncol=1),
widths=widths, heights=heights)
grid.draw(gt)
}
grid.newpage()
grid.expr(LETTERS[1:5], heights=unit(1:5,"line"))