ggplot のループを使用して多くのグラフを生成することに関する多くの投稿を読みましたが、私の問題を説明するものは見つかりません...
データフレームがあり、92 列をループして、列ごとに新しいグラフを作成しようとしています。各プロットを個別のオブジェクトとして保存したい。ループ (以下のコード) を実行してグラフを印刷すると、すべてのグラフが正しく表示されます。ただし、print() コマンドを assign() で変更すると、グラフが正しくありません。タイトルは変更されていますが、グラフの値はすべて同じです (最終的なグラフのすべての値です)。これを見つけたのは、plot_grid() を使用して 10 個のプロットの図を生成したとき、グラフのタイトルと軸のラベルはすべて正しいのに、値が同じだったからです。
私のデータセットは大きいので、下の図に小さなデータセットを用意しました。
サンプルデータ名:
library(ggplot)
library(cowplot)
df <- as.data.frame(cbind(group=c(rep("A", 4), rep("B", 4)), a=sample(1:100, 8), b=sample(100:200, 8), c=sample(300:400, 8))) #make data frame
cols <- 2:4 #define columns for plots
for(i in 1:length(cols)){
df[,cols[i]] <- as.numeric(as.character(df[,cols[i]]))
} #convert columns to numeric
プロット:
for (i in 1:length(cols)){
g <- ggplot(df, aes(x=group, y=df[,cols[i]])) +
geom_boxplot() +
ggtitle(colnames(df)[cols[i]])
print(g)
assign(colnames(df)[cols[i]], g) #generate an object for each plot
}
plot_grid(a, b, c)
ggplots がプロットを作成すると、i の最終値からのデータのみがレンダリングされると考えていますか? それともそのようなものですか?これを回避する方法はありますか?
作成したいグラフがたくさんあり、図のプロットを組み合わせて一致させたいので、このようにしたいと思います。
ありがとう!