Ich habe eine Reihe von Datenrahmen und ich möchte 2 Spalten von jedem Datenrahmen auf dem gleichen ggplot plotten. Ich habe bereits einen Plot von einer anderen Funktion, blau und rot gefärbt, und ich möchte, dass die neuen hinzugefügt werden. Obwohl die Art, wie ich versuche, auf der Konsole funktioniert, kann ich die Funktion nicht speichern, sie aufrufen und ausführen lassen. Der Fehler, den ich bekommen ist:Plotten von Datenrahmen in der gleichen ggplot mit for-Schleife in einer Funktion
Discrete value supplied to continuous scale.
Also, der Datenrahmen in meiner Umgebung ist und BEFMORN1 zu BEFMORN9 benannt. Das erste Diagramm ist test_plot.
Der erste Teil, der mir den test_plot gibt funktioniert.
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)")
Der zweite Teil wird die neue Funktion
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 eine Liste von 6 Listen der verschiedenen Datenrahmen ist, also aus BEFMORN r kam [[1]]. BEFNOON wird von r [[2]] usw. kommen. Mein Plan ist also, 6 identische Funktionen mit verschiedenen Argumenten in paste0 zu haben.
Ich verwende aes_string(x=names(z)[12]
, weil die Datenrahmen z unterschiedliche Spaltennamen in jeder Iteration haben werden.
Versteht jemand, warum ich einen Fehler erhalte? Ich habe mit der Waage herumgespielt (sie von der ersten Handlung entfernt oder sie im nächsten wieder hinzugefügt), aber keine Verbesserung.
BEARBEITEN: Alle zu plottenden Spalten wurden in numerische umgewandelt. Andere sind Faktoren und ganze Zahlen.
Beispiel
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)
}
Der Grund für den Fehler liegt in der Regel daran, dass die Daten weit und nicht lang formatiert sind und ggplot sie als diskrete Variablen interpretiert. Abgesehen davon ist es ziemlich schwierig, ohne ein reproduzierbares Beispiel zu helfen (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Möchten Sie mehrere Kurven zu einem einzelnen Diagramm hinzufügen oder mehrere Diagramme ausdrucken? – biomiha
mehrere Kurven zu einem einzigen Plot – Nikos
In diesem Fall die Datenrahmen zu einem verschmelzen (keine Notwendigkeit für Schleifen - es gibt viele bessere Optionen), transformieren Sie die Daten in langes Format und Farbe durch welche Variable definiert Ihre Kurven. – biomiha