r - 使用 grid.layout 时不遵守的宽度

标签 r layout r-grid

我正在尝试创建一个类似于

Example layout

但是无论我为宽度设置什么,布局都将面板的全宽用于Plot。使用以下代码:

masterLayout <- grid.layout(
    nrow    = 4,
    ncol    = 1,
    widths  = c(1,0.6,1,1),
    heights = c(.2,.6,.1,.1))

vp1 <- viewport(layout.pos.row=1, name="title")
vp2 <- viewport(layout.pos.row=2, name="plot")
vp3 <- viewport(layout.pos.row=3, name="legend")
vp4 <- viewport(layout.pos.row=4, name="caption")

pushViewport(vpTree(viewport(layout = masterLayout, name = "master"),
                    vpList(vp1, vp2, vp3, vp4)))

如何使用 grid 复制图像中的布局?包裹?

最佳答案

grid.layout 制作一个矩形表格,因此对于给定的列(行),所有宽度(resp.heights)都将相等。您在单元格内推送特定尺寸的视口(viewport)的方法可能是最简单的。

作为一种替代方法,您可以制作包含更多列的布局,并指定用于特定 grob 的单元格范围。

library(gridExtra)

gs <- lapply(1:4, function(ii) 
  grobTree(rectGrob(gp=gpar(fill=ii, alpha=0.5)), textGrob(ii)))

m <- rbind(c(1,  1,  1), 
           c(NA, 2, NA),
           c(3,  3,  3), 
           c(4,  4,  4))
grid.arrange(grobs = gs, 
             layout_matrix = m,
             heights=unit(c(1,1,1,1), c("line", "null", "line")),
             widths = unit(c(0.2,0.6,0.2), "npc"))

enter image description here

关于r - 使用 grid.layout 时不遵守的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32440268/

相关文章:

r - 矢量化 seq 的优雅方式?

r - 使用 openxlsx 包的工作表链接问题

r - 使用 geom_contour_filled 手动设置等高线图的比例

r - 按 R 中的类别分解银行对帐单

html - 这个空白是从哪里来的呢?

java - 如何在 9-patch 的一行中放置更多的字符?

r - 为 facet_grid/facet_wrap 图的每一行分配唯一的宽度

html - IE风格完全乱了

r - 如何将wordcloud放入grob中?

r - ggplotGrob 对象上的 cbind 失败,错误为 "Error in mmm < each : comparison of these types is not implemented"