データフレームがたくさんあり、同じggplotに各データフレームの2つの列をプロットする必要があります。私は既に青と赤で色付けされた別の関数からのプロットを持っています。新しいものを追加したいのです。私が試している方法はコンソール上で動作しますが、関数を保存して呼び出すことはできません。私が手にエラーがある:だから関数内でforループを使用して同じggplotにデータフレームをプロットする
Discrete value supplied to continuous scale.
、データフレームは、私の環境であり、BEFMORN9にBEFMORN1を命名しました。最初のプロットはtest_plotです。
私にtest_plotが動作する最初の部分です。
test_plot<-ggplot()+geom_point(data=yy4, aes(x=Time, y=Dist), colour="red")+geom_point(data=zz4, aes(x=Time, y=Dist), colour="blue")
test_plot<-test_plot+scale_x_continuous(name="Time (Seconds from the beginning)")
test_plot<-test_plot+scale_y_continuous(name="Distance (Metres from the beginning)")
第二の部分は
plot_all_runs<-function(r,test_plot) {
for (i in 1:(length(r[[1]]))) {
z<-as.data.frame(mget(ls(pattern=paste0("BEFMORN",i))))
test_plot2<-test_plot+geom_point(data=z, aes_string(x=names(z)[12], y=names(z)[17]))
}print(test_plot2)
}
R新しい関数となるBEFMORNはRから来たように[1] []、異なるデータフレームの6つのリストのリストです。 BEFNOONはr [[2]]などから来るでしょう。私の計画はpaste0の引数が異なる6つの同じ関数を持つことです。
私はaes_string(x=names(z)[12]
を使用しています。データフレームzは、各繰り返しで異なる列名を持つためです。
誰かがエラーが発生する理由を理解していますか?私はスケールを使って遊んだことがあります(最初のプロットから削除したり、次のプロットで再び追加します)が、改善はありません。
EDIT: プロットされるすべての列が数値に変換されました。その他は因子と整数です。
例
BEFMORN1<-data.frame(BEFMORN1.Time=seq(0:10, 0.5), BEFMORN1.Dist=1:20)
BEFMORN2<-data.frame(BEFMORN2.Time=seq(0:13, 0.5), BEFMORN2.Dist=c(1:8,8,8,9,10,13,13,13,13.5,14,14,14 14:20))
yy4<-data.frame(Time=seq(0:10, 0.5). Dist=c(1:8,8,8,9,10,13,14:20))
ZZ4<-data.frame(Time=seq(0:12, 0.5). Dist=c(1:8,8,8,9,9.5,10,10.5,12,12.5,13,14:20))
test_plot<-ggplot()+geom_point(data=yy4, aes(x=Time, y=Dist), colour="red")+geom_point(data=zz4, aes(x=Time, y=Dist), colour="blue")
plot_all_runs<-function(test_plot) {
for (i in 1:9) {
z<-as.data.frame(mget(ls(pattern=paste0("BEFMORN",i))))
test_plot2<-test_plot+geom_point(data=z, aes_string(x=names(z)[12], y=names(z)[17]))
}print(test_plot2)
}
エラーの理由は通常、データが長い形式ではなくワイドにあり、ggplotがそれらを別個の変数として誤って解釈するためです。それ以外は、再現可能な例がなければ助けがかなり難しいです(http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 1つのプロットに複数の曲線を追加するか、複数のプロットを出力しますか? – biomiha
複数の曲線を1つのプロットに変換する – Nikos
その場合、データフレームを1つにマージします(ループを必要としません - 多くのオプションがあります)、曲線を定義する変数によってデータを長いフォーマットと色に変換します。 – biomiha