将 grob 添加到 R 中的基础图中

问题描述 投票:0回答:2

我想将我使用

splitTextGorb
包中的
RGraphics
构建的多行文本添加到基本图中。我尝试了以下方法,但这不起作用(即文本没有显示在绘图上)

layout(matrix(c(1,2), nrow=2, byrow=TRUE), heights = c(1,1.5))    
plot(...)
grob = splitTextGrob("This is my text")
plot.new()
vp.BottomRight <- viewport(height=unit(.5, "npc"), width=unit(0.5, "npc"), 
                       just=c("left","top"), 
                       y=0.5, x=0.5)
print(grob, vp = vp.BottonRight)

我知道

mtext
是向基本图添加文本的选项,但我想专门使用
splitTextGrob
,因为它提供了
mtext
grid.text()
所没有的灵活性。

r plot viewport grob
2个回答
2
投票

这使用 gridBase 包将文本添加到绘图的当前视口。

library(RGraphics)
library(gridExtra)
library(gridBase)


layout(matrix(c(1,2), nrow=2, byrow=TRUE))

# First base plot
plot(1:10)

# Grid regions of base plot
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)

# Text grob
grob <-  splitTextGrob("This is my text")
vp.BottomRight <- viewport(height=unit(.1, "npc"), width=unit(0.1, "npc"), 
                       just=c("left","top"), 
                       y=0.2, x=0.8 )
# Add text grob
pushViewport(vp.BottomRight)
grid.draw(grob)

upViewport(4) 


# Second plot
plot(1:10)
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
pushViewport(vp.BottomRight)
grid.draw(grob)

1
投票

您需要将

grid.draw()
用于 grob 和 gTree 对象。

grid.text()
仅适用于文本和绘图数学表达式。

© www.soinside.com 2019 - 2024. All rights reserved.