2014-03-27 31 views
1

我想将包含RGraphicssplitTextGorb的多行文本添加到基本图中。我尝试以下,但这不起作用(即文本不会对剧情显示)将grob添加到R中的基本图中

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是文本添加到垒积的选择,但我想用因为它具有mtextgrid.text()不具备的灵活性。

任何帮助,将不胜感激。谢谢!

+0

我觉得你有一个解决方案,所以请选择一个答案。谢谢! – rsoren

回答

1

对于grob和gTree对象,您将需要使用grid.draw()

grid.text()仅适用于文本和plotmath表达式。

1

这使用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)