我想将tableGrob图表与pdf顶部对齐。默认设置为中间。我的问题是当我有行号不同的图表时。
library(ggplot2)
g <- gridExtra::tableGrob(head(iris))
g2 <- gridExtra::tableGrob(iris[1:3,])
pdf("test.pdf")
gridExtra::grid.arrange(g, heights = c(1,3), padding = unit(1,"in"), top =
"Title")
gridExtra::grid.arrange(g2, heights = c(1,3), padding = unit(1,"in"), top =
"Title2")
dev.off()
标题和图表之间的间距不一致。 “标题2”和g2之间的间隔比“标题”和g大得多。如何将两个图表“锁定”到距页面顶部1.5英寸的位置?最终,我将拥有许多行数不同的图表,并且不想每次都手动更改“ heights”参数。
答案 0 :(得分:0)
关于同一主题,有多个问题,其他所有问题的公认答案是Post from Baptiste
library(gridExtra)
justify <- function(x, hjust="center", vjust="center", draw=TRUE){
w <- sum(x$widths)
h <- sum(x$heights)
xj <- switch(hjust,
center = 0.5,
left = 0.5*w,
right=unit(1,"npc") - 0.5*w)
yj <- switch(vjust,
center = 0.5,
bottom = 0.5*h,
top=unit(1,"npc") - 0.5*h)
x$vp <- viewport(x=xj, y=yj)
if(draw) grid.draw(x)
return(x)
}
library(gridExtra)
tg <- list(tableGrob(iris[1:3, 1:2]), tableGrob(iris[1:5, 1:2]))
tgt <- lapply(tg, justify, vjust="top", draw=FALSE)
grid.newpage()
grid.arrange(grobs=tgt, ncol=2)
在这种情况下,您可以在PDF代码中放置适当的grid.arrange()。
我会提到,当我尝试此操作时,确实出现以下错误:
5.stop("both operands must be units")
4.Ops.unit(unit(1, "npc"), 0.5 * h)
3.FUN(X[[i]], ...)
2.lapply(myplot, justify, vjust = "top", draw = FALSE)
如果您遇到相同的错误,也许有人可以对此发表评论。