为什么确定点 grob ( ) 的大小(例如,以 mm 为单位pointsGrob
)失败,但对于文本 grob ( textGrob
) 却不行?
### puzzled about grobs (not) knowning how big they are:
require(grid)
convertUnit(grobWidth(textGrob("some tex")), "mm") # 16.93mm => fine
convertUnit(grobWidth(pointsGrob(0.5, 0.5)), "mm") # 0mm => ?
convertUnit(grobWidth(pointsGrob(0.5, 0.5, size=unit(3, "mm"))), "mm") ## still 0mm...
我问的原因是:如果您并排放置一个文本 grob 和一个点 grob,并更改 的值cex
,那么这两个 grob 突然重叠(不需要的行为)。
这是一个显示类似问题的示例:
gt <- grobTree(pointsGrob(x=.5, y=.5, gp=gpar(cex=4)),
linesGrob(x=0:1, y=.5, gp=gpar(cex=4)),
pointsGrob(x=.5, y=.5, gp=gpar(cex=1)))
pg <- packGrob(frameGrob(vp=NULL), gt,
width = unit(1, "char"),
height = unit(1, "char"))
grid.newpage()
grid.draw(pg)
grid.rect(width=grobWidth(pg), height=grobHeight(pg), gp=gpar(col="red"))
矩形显示 grob 的宽度和高度不正确;pg
不会“看到”大点的大小cex
。如何做到这一点?