我有多个对象想在一页上绘制在一起,每个对象都有单独的标题。目前,我有一个地块标题的向量,我在lapply中将其输入到ggtitle中,但是它仅将此向量的第一项添加到每个地块中。

下面是一个快速而丑陋的最小示例:

library(ggplot2)
library(gridExtra)

#My 'data'
A.a <- rnorm(10)
A.b <- rnorm(30)
lmnames <- ls(pattern = "A.*")

titlenames <- c("Plot A", "Plot B")

plotlist <- list()
#I have a more complex ggplot function in reality, but I'm using qplot here as a placeholder.
plotlist <- lapply(lmnames, FUN=function(x,y){qplot(get(x)) + ggtitle(y)}, y=titlenames)

grid.arrange(grobs = plotlist)


看起来像这样:
r - lapply中的单独地块标题-LMLPHP

您可以看到,两个图都标记为“图A”。我想对每个地块进行相应的标记。谁能帮我看看我在这里想念的东西吗?提前致谢。

最佳答案

您的问题是,在所有地块中,标题都是“地块A”,“地块B”,请参见plotlist[[1]]$labels$title

工作代码如下:

plotlist <- lapply(1:length(lmnames), function(x){
  qplot(get(lmnames[x])) + ggtitle(titlenames[x])
})


我敢肯定还有更优雅的解决方案。但这将起作用。

问候,
J_F

关于r - lapply中的单独地块标题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37674898/

10-09 23:21