我有一个函数DisplayPlot,它将字符串列表作为输入(指的是数据帧中的列).例如,如果list_string = c("string1","string2"),循环使用list_string的元素,我想并排显示两个ggplots.
到目前为止,我在我的函数中所做的是将ggplots存储到列表中:
for (i in 1:length(list_string){
p = ggplot(data=d, aes(x=d[,1], y=as.numeric(levels(d[,(i+1)]))[d[,(i+1)]], fill=d[,1])) +
geom_bar(stat="identity") +
guides(fill=FALSE) +
labs(x = Y) + labs(y = paste("CP",list_X[i],"_per_",Y,sep = ""))
graph[[length(graph) + 1]] <- p }
Run Code Online (Sandbox Code Playgroud)
并返回:
return(list(graph=graph, along with some other information))
Run Code Online (Sandbox Code Playgroud)
问题是,如果我想使用类似的函数grid.arrange,我需要手动编写图的名称:grid.arrange(p1,p2,ncol=2)而在我的情况下,这个数字可能会有所不同,并存储在列表中(grid.arrange不喜欢的格式).
非常感谢您的帮助,克莱门特
bap*_*ste 10
grid.arrange(grobs = graph)
Run Code Online (Sandbox Code Playgroud)
或者(历史上,并不总是有一个grobs论点),
do.call(grid.arrange, graph)
Run Code Online (Sandbox Code Playgroud)