2
为什么这些行(通过linesGrob
)未绘制在下面的图中?gtable_add_grob():linesGrob()not displayed
require(gtable)
base <- gtable(widths=unit(rep(1, 2), "null"),
heights=unit(rep(1, 3), "null"))
grid.newpage()
g <- 1
for(i in 1:3) {
for(j in 1:2) {
base <- gtable_add_grob(base,
grobs=list(linesGrob(x=1:4, y=4:1),
rectGrob(gp=gpar(fill="#FF0000")),
textGrob(label=g)), i, j, name=1:3)
g <- g+1
}
}
grid.draw(base)
谢谢,巴蒂斯特。第二个原因很明显,但第一个(?)。所有的视口都有它们默认的'NULL'值,所以不应该像在打开新页面的情况下那样在相应的矩形中绘制点。这是我并不真正了解的东西......为什么(以及如何)我必须指定...在'古典'网格中,我将推动视口,然后它将工作。 –
gtable的每个单元格都有一个视口,当您在其中绘制一个grob时,您需要确保坐标在视口内适合。一个基本的例子是'grid.newpage(); grid.lines(x = 1:4,y = 4:1,default.units =“npc”):它没有画任何东西,因为'1:4'被解释为标准坐标,从0到1。要么重新调整数据,要么指定视口并使用“本地”坐标。 – baptiste
感谢您的回答,Baptiste。重新缩放数据的解决方案也可以运行(但不那么直观/自然)。 –