grid.text和定位在视口(grid.text and positioning in viewp

2019-10-19 01:46发布

我试图通过边创建两个地块侧和注释它们:

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()但没有成功。 有任何想法吗?

Answer 1:

你必须指定视口,在那里你要打印的文本标签: grid.text('plot1', vp=vplayout(1,1)) 你也应该指定在视口中要打印。 默认情况下,它会打印在中央的文字。 此外,为了在打印事宜。 所以第一pirnt情节,然后在顶部的标签。 总之你的代码看起来就像这样:

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)


文章来源: grid.text and positioning in viewports
标签: r ggplot2