1

我有一个包含多行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.textgrid.expr命令定位行吗?

4

1 回答 1

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"))
于 2014-12-27T16:02:49.657 回答