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。重新縮放數據的解決方案也可以運行(但不那麼直觀/自然)。 –