新しい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])
}}
ここでは、pが上書きされますが、代わりに、生成されたすべてのpを配置できる行列またはリストが必要です。次に、次のような単純な関数を使用します。
display_in_a_grid(list_of_ggplot_plots)
しかし、私が試した限りでは、プロットの行列のリストを作成することはできませんでした。また、入力に引数を1つだけ取る関数を見つけることもできませんでした。
私が見てきたことについて:
ggplot2の「ファセット」メソッドは、私のデータセットの編成に適合していません(または反対に:p)
これを管理する簡単な方法はありますか?
ありがとうございました、
フランソワ
私はリッチーに同意する傾向がありますが、あなたがそれらを自分で手配したい場合:
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)
forループを完全に削除する方法については、?arrangeGrob
の最後の例をご覧ください。
plots = lapply(1:5, function(.x) qplot(1:10,rnorm(10),main=paste("plot",.x)))
require(gridExtra)
do.call(grid.arrange, plots)
これが私の解決策です。 ggplot
パラメータをaes_string
に変更したmapping
関数の小さな変更。
library(gridExtra)
library(ggplot2)
p <- list()
for(i in 1:4){
p <- ggplot(data=df,aes_string(x=df$x,y=df$y) +geom_bar(aes_string(x=class.names[i],fill=var.names[j])
}
do.call(grid.arrange,p)
お役に立てれば!