R如何使用cookbook-r中的multiplot函数绘图时添加文本(使用mtext?)

时间:2015-03-11 08:18:14

标签: r plot ggplot2

我使用here中的multiplot函数将graph<-ggplot(...)形式的多个图表与行

叠加在一起
png(filename = "qwerty.png", width = 1024, height = 1024, units = "px", 
    pointsize = 11, bg = "white",  res = 150)
multiplot(graph1,graph2,...., layout=matrix(c(1,2,3,4,5,6,7,8), nrow=8, 
          byrow=TRUE))
dev.off()

我想在第一张图表上方添加几行文字,例如,对于某些字母,文字可以使用粗体进行复杂编辑。

我试图在multiplot

之前和之后放置它
mtext(expression(paste("only ", bold("a"), " should be bold")), 1, 1)

但我收到了错误

Error in mtext(expression(paste("only ", bold("a"), " should be bold")),  : 
  plot.new has not been called yet`

使用我的文字&#39;&#39;作为图表&#39;堆叠另一个空图表是否更好? ?如果是这样,我该怎么做?

这些数据可用于构建图表

p1 <- ggplot((subset(mtcars, gear==4)), aes(x=mpg, y=hp)) + 
      geom_point() +
      ggtitle("4 gears")
p2<-ggplot((subset(mtcars, gear==3)), aes(x=mpg, y=hp)) +
    geom_point() +
    ggtitle("3 gears")
multiplot(p1, p2, cols=2)

1 个答案:

答案 0 :(得分:1)

您可以使用grid.arrange:

代替多重绘图
library(gridExtra)

grid.arrange(arrangeGrob(p1,p2,ncol=2, nrow=1), main = "Here your title should be inserted",nrow=1)

如果您想调整一些文本参数,以下内容可能有所帮助:

grid.arrange(arrangeGrob(p1,p2,ncol=2, nrow=1), main = textGrob("Here your title should be inserted",gp=gpar(fontsize=16, font=2)))

保存文件:

png("example-plot.png")
grid.arrange(arrangeGrob(p1,p2,ncol=2, nrow=1), main = textGrob("Here your title should be inserted",gp=gpar(fontsize=16, font=2)))
dev.off()