有没有办法将 Grob 中的表格与面板左侧对齐而不是居中?
在下面的示例中,您可以看到表格位于下面板的中心,但我希望它与左侧对齐。我找不到任何方法可以做到这一点。
library(gridExtra)
library(grid)
grid.arrange(
grobTree(
rectGrob(gp=gpar(fill="gray", col = NA)),
textGrob("Title\nThis is some text.\nAnd more text.\nAnd more text.",
x = 0.01, y=0.95, gp = gpar(fontsize = 12), just = c("left", "top"))
),
grobTree(
rectGrob(gp=gpar(fill="lightgray", col = NA)),
tableGrob(head(mtcars[1:4]), rows = NULL)
)
)
创建于 2023-10-19,使用 reprex v2.0.2
我是 Grobs 的新手,因此如果您对如何以更好的方式实现此目标有任何一般性建议,请告诉我!
您需要为
tableGrob
提供自己的视口以绘制到:
library(gridExtra)
library(grid)
grid.arrange(
grobTree(
rectGrob(gp=gpar(fill="gray", col = NA)),
textGrob("Title\nThis is some text.\nAnd more text.\nAnd more text.",
x = 0.01, y=0.95, gp = gpar(fontsize = 12), just = c("left", "top"))
),
grobTree(
rectGrob(gp=gpar(fill="lightgray", col = NA)),
tableGrob(head(mtcars[1:4]), rows = NULL,
vp = viewport(x = 0.18, y = 0.5))
)
)
这里的困难之一是
tableGrob
是固定宽度,但您的绘图设备不是。这意味着为视口选择 x 值需要根据绘图大小进行调整。如果您想让表格保持在左侧,无论您的绘图如何缩放,您可以使用 grob 本身副本的宽度来指示 x 位置:
grid.arrange(
grobTree(
rectGrob(gp=gpar(fill="gray", col = NA)),
textGrob("Title\nThis is some text.\nAnd more text.\nAnd more text.",
x = 0.01, y=0.95, gp = gpar(fontsize = 12), just = c("left", "top"))
),
grobTree(
rectGrob(gp=gpar(fill="lightgray", col = NA)),
tableGrob(head(mtcars[1:4]), rows = NULL,
vp = viewport(x = unit(1.5, 'grobwidth',
data = tableGrob(head(mtcars[1:4]),
rows = NULL)),
y = 0.5))
)
现在,无论绘图如何缩放,表格仍然与左侧完全对齐。