我正在尝试并排创建两个图并注释它们:
setEPS(horizontal = FALSE, onefile = FALSE, paper = "special")
vplayout <- function(x, y) {
viewport(layout.pos.row = x, layout.pos.col = y)
}
postscript(file="test.eps")
grid.newpage()
pushViewport(viewport(layout = grid.layout(1,2)))
plot1 <- qplot(rnorm(100))
grid.text('plot1')
print(plot1,vp=vplayout(1,1))
plot2 <- qplot(rnorm(10))
grid.text('plot2')
print(plot2,vp=vplayout(1,2))
dev.off()
问题在于我无法在每个单独的图上绘制标签,而是在背景中的两个图后面显示。
我尝试使用upViewport()
,popViewport()
和downViewport()
进行试验,但没有成功。有什么想法吗?
答案 0 :(得分:2)
您必须指定要在其中打印文本标签的视口:grid.text('plot1', vp=vplayout(1,1))
。您还应指定要在视口中打印的位置。默认情况下,它会在中心打印文本。而且,您打印的顺序很重要。所以首先将图形倾斜,然后将标签放在顶部。总而言之,您的代码看起来应该是这样的:
grid.newpage()
pushViewport(viewport(layout = grid.layout(1,2)))
plot1 <- qplot(rnorm(100))
print(plot1,vp=vplayout(1,1))
grid.text('plot1', x=.5, y=.95, vp=vplayout(1,1))
plot2 <- qplot(rnorm(10))
print(plot2,vp=vplayout(1,2))
grid.text('plot2', x=.5, y=.95, vp=vplayout(1,2))
您也可以使用ggtitle
代替grid.text
。如果您使用gridExtra
包,则可以完全避免视口:
require(gridExtra)
grid.arrange(
plot1 + ggtitle('plot1'),
plot2 + ggtitle('plot2'),
nrow=1)