同じ構造であるがY値が異なる複数の散布図グラフをggplotに作成しようとしています。後のステップでgrid_arrangeを使用して、グラフのさまざまな組み合わせを1つのレイアウトに配置するため、それらを別々にする必要があります(したがって、facet_wrapを使用しないでください)。ループを使って異なるY軸値を持つggplotに複数のプロットを作成する
このため、プロットするy値を反映する新しいプロット名を作成する必要があります。以下はサンプルコードです。月はx軸上の変数で、3つの追加変数(lag1_var、lag3_var、lag9_var)に対して3つの別々のプロットが必要です。
df <- data.frame (month= c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12),
lag1_var= c (10, 20, 30, 40, 10, 40, 30, 50, 70, 90, 100, 100),
lag3_var= c(90, 70, 50, 40, 70, 50, 20, 50, 70, 90, 10, 10),
lag9_var = c(50, 20,90, 100, 90, 10, 40, 90, 100, 20, 30, 70))
私のアプローチは、以下のような、そのリスト上のy値とループ間で異なる値のリストを作成することでした。
loop.list <- c("1", "3", "9")
for (val in loop.list) {
yval<- paste0("lag", val, "_var")
ptitle <-paste0("graph plot lag", val, "_Var")
assign(paste0("plot", val), ggplot(data=df, aes(x=month, y=get(yval)))
+geom_point(color="red", size=2) + ggtitle(ptitle))
}
私はこれを行うとき、私は3と3つのプロットを取得しますプロット1はタイトル「グラフプロットlag1」を有し、プロット3はタイトル「グラフプロットlag3」などを有するが、それらは全て同一のプロットである。ループはプロット名とプロットタイトルのために働いていますが、y値は使用していません。最後のループ(変数lag9_varの場合)から値を出力するだけです。
なぜこのようなことが起こっているのか、それがなぜY値にのみ発生し、タイトルやプロット名ではないのかわかりません。私はいつもSASでプログラミングしていますし、Rには新しいので、SASの見込み客からこれを「R」の方法で考えるのではなく、アプローチしていると思います。
注:上記のコードでは、ggplotステートメントの外側にオブジェクト "yval"と "ptitle"を作成しますが、これはトラブルシューティングに役立ちます。私は以下のようなggplot文の中でそれらを含める場合、同じことが起こります:
for (val in loop.list) {
assign(paste0("plot", val), ggplot(data=df,aes(x=month,y=get(paste0("lag", val, "_var")))) +
geom_point(color="red", size=2) +
ggtitle(paste0("graph plot lag", val, "_Var")))
}
は、任意の助けをありがとう!
'setnames'(大文字)は' data.table'関数なので、パッケージを添付すればうまくいくでしょうか?私は 'data.table'をたくさん使っていますので、その関数を使うのに慣れています。 – rosscova
ああ、意味がある、私はちょうどdata.tableを発見したので、まだすべての機能に精通していない。ありがとう! – Ninarjoyce
あなたは大歓迎です。あなたの問題が解決した場合は、その答えを受け入れることを忘れないでください。他の人が必要な場合にそれを見つけることができます。 – rosscova