我有一些对象,我想在一个页面上一起绘制,每个对象都有一个单独的标题。目前,我有一个情节标题的矢量,我在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)
你可以看到,这两个地块都标有“地块A”。我希望每个地块都有相应的标签。谁能帮我看看我在这里缺少什么?提前谢谢。
答案 0 :(得分:2)
你的问题是,在你的所有情节中,你的标题是&#34;情节A&#34; &#34;绘制B&#34;,见plotlist[[1]]$labels$title
。
工作代码如下:
plotlist <- lapply(1:length(lmnames), function(x){
qplot(get(lmnames[x])) + ggtitle(titlenames[x])
})
我确信有更优雅的解决方案。但是这个会奏效。
此致 J_F
答案 1 :(得分:2)
使用mapply循环使用多个变量通常更清晰,
library(ggplot2)
library(gridExtra)
dl <- list("Plot A" = rnorm(10), "Plot B" = rnorm(10))
plot_fun <- function(x, y) qplot(x) + ggtitle(y)
grid.arrange(grobs = Map(plot_fun, x = dl, y = names(dl)))
答案 2 :(得分:0)