作为一个新的ggplot2用户,我有点失去了可能性,并努力在网上找到一个简单的答案,我认为是一个简单的问题.
我想在同一张纸上显示来自ggplot2的多个图,但是知道这些图来自for循环.
下面的例子没有编译,只是为了说明:
for(i in c(1:n)){
for(j in c(1:m)){
.......... # some data production
p <- ggplot(df.all) + geom_bar(aes_string(x=class.names[i],fill=var.names[j])
}}
Run Code Online (Sandbox Code Playgroud)
在这里,p被覆盖了,但是我希望有一个矩阵或一个列表,我可以将所有p放在它们生成的位置,然后像一个简单的函数,如
display_in_a_grid(list_of_ggplot_plots)
Run Code Online (Sandbox Code Playgroud)
但据我所知,我无法制作一个绘图矩阵列表,也无法找到只接受一个参数输入的函数.
关于我看过的事情:
包gridExtra中的"arrangeGrob"不起作用,因为它需要每个绘图的显式名称(例如:p1,p2,p3,...),如http://code.google.com/p/gridextra/wiki/ arrangeGrob
ggplot2的"facet"方法不适合我的数据集的组织(或相反:p)
你有一个简单的方法来管理这个吗?
谢谢,
弗朗索瓦
Jus*_*tin 42
我倾向于同意里奇,但如果你想自己安排:
library(gridExtra)
library(ggplot2)
p <- list()
for(i in 1:4){
p[[i]] <- qplot(1:10,10:1,main=i)
}
do.call(grid.arrange,p)
Run Code Online (Sandbox Code Playgroud)
看看最后的例子,找出?arrangeGrob完全消除for循环的方法:
plots = lapply(1:5, function(.x) qplot(1:10,rnorm(10),main=paste("plot",.x)))
require(gridExtra)
do.call(grid.arrange, plots)
Run Code Online (Sandbox Code Playgroud)