2017-03-12 3 views
0

Im arbeiten mit einem Datenrahmen mit 8 nützliche Variablen, die Idee des Codes ist es, 4 Variablen (3 auf y-Achse und eine gemeinsame X-Achse) zu plotten. Der Datenrahmen sieht wie folgt aus:Subset Datenrahmen und zeichnen alle Untermengen mit einer Schleife [R]

It has like 6500 rows

ich die data.frame aus der Datei Spalte der Teilmenge werden soll, und dann plotten LogP als x-Achse und Temperatur, relativer Luftfeuchtigkeit und Ozon als y-Achse. Ich habe versucht, Teilmenge innerhalb der Plot-Funktion, aber ging nicht gut. Ich habe diesen Code für das Grundstück mit einem der ursprünglichen Dateien, aber keine Ahnung, wie die Teilmenge

> plot(DataOzono$LogP, DataOzono$Temperature, axes= F,type="l",col="red", ylab = NULL, xlab = 'LogP',xaxt="n",yaxt="n") 
axis(2,ylim(c(min(DataOzono$Temperature),max(DataOzono$Temperature)), layout.widths(2))) 
mtext(text = 'T',line = 2,side = 2) 
par(new=TRUE) 
plot(DataOzono$LogP, DataOzono$RH,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="") 
axis(4) 
mtext("RH",side=4,line=2) 
par(new=TRUE) 
plot(DataOzono$LogP, DataOzono$Ozone,type="l",col="green",xaxt="n",yaxt="n",xlab="",ylab="") 
mtext("O3",side=5,line=3) 
axis(2, line = 4) 

jede Beratung wird es sein, umfasst sehr hilfreich.

+0

Was meinst du mit Teilmenge? Möchten Sie ein Diagramm (mit 3 Plots) für jede Nummer in der Spaltendatei? –

+0

Verwenden Sie auch Windows? –

+0

Ich glaube, ich habe mich nicht selbst erklärt, ich möchte ein Diagramm dieser Variablen für jeden Dateicode im Datenrahmen erstellen. Das Diagramm wird wie drei Y-Achsen (eine pro Variable) und eine X-Achse angeordnet. und ja ich benutze Windows –

Antwort

1

So können Sie die Diagramme in einem loop plotten. In dem Beispiel, das Sie angegeben haben, haben wir nur eine Dateinummer. Es sollte jedoch für jede Zahl in der Dateispalte ein Diagramm erstellt werden. Unter Windows können Sie savePlot auf Ihrem Laufwerk speichern. Ich habe Ihr Beispiel vereinfacht, weil ich Fehler bekommen habe.

DataOzono <- read.table(text="pressure height Temperature RH Ozone file LogP 
753.6 2541 16.8 76 0 80131 0.3475673 
748.0 2604 17.7 32 0 80131 0.347959 
743.5 2656 15.9 38 0 80131 0.3482766 
739.8 2697 15.4 39 0 80131 0.3485396 
736.6 2734 15.0 41 0 80131 0.3487685 
731.8 2790 14.5 42 0 80131 0.3491142", header=TRUE, stringsAsFactors=FALSE) 

original_par <- par() 
par(mar=c(5.1, 8.1, 4.1, 3.1)) 

for (i in unique(DataOzono$file)){ 
DataOzono_subset <- DataOzono[DataOzono$file==i,] #keep only rows for that file number 

plot(DataOzono_subset$LogP, DataOzono_subset$Temperature, axes= F,type="l",col="red", ylab = "", xlab = 'LogP',xaxt="n",yaxt="n") 
axis(2,col="red",col.axis="red") 
mtext(text = 'T',line = 2,side = 2,col="red",col.lab="red") 
par(new=TRUE) 
plot(DataOzono_subset$LogP, DataOzono_subset$RH,type="l",col="blue",xaxt="n",yaxt="n",xlab="",ylab="") 
axis(4,col="blue",col.axis="blue") 
mtext("RH",side=4,line=2,col="blue",col.lab="blue") 
par(new=TRUE) 
plot(DataOzono_subset$LogP, DataOzono_subset$Ozone,type="l",col="darkgreen",xaxt="n",yaxt="n",xlab="",ylab="") 
mtext("O3",side=2,line=6,,col="darkgreen",col.lab="darkgreen") 
axis(2, line = 4,col="darkgreen",col.axis="darkgreen") 

savePlot(filename=paste0("c:/temp/",i,".png"),type="png") 
} 

par() <- original_par #restore par to initial value. 

enter image description here

+0

Vielen Dank das löst alle meine Probleme, nur eine Frage im Erhalten dieses Fehlers "Fehler in savePlot (Dateiname = paste0 (" c:/temp/", ich," .png "), type =" png "): kann nur von 'Windows' Geräte kopieren" Es kann mit meinem Arbeitsverzeichnis nicht bezogen werden: C aber eine Partition: E? –

+0

Versuchen Sie, den Pfad ("c:/temp /") in ein Verzeichnis zu ändern, das bereits auf Ihrem Computer vorhanden ist. Stellen Sie außerdem sicher, dass Programme in diesen Ordner schreiben können. Normalerweise ist c:/temp eine sichere Wette, deshalb habe ich diesen Weg gewählt. Wenn savePlot nicht funktioniert, sehen Sie sich die Beispiele in '? Png' an. Dazu müssen Sie die png-Zeile vor dem Plot und dev.off() nach dem Plot in Ihrer Schleife setzen. –

+0

Ich habe nicht herausgefunden, warum savePlot nicht funktioniert, stattdessen habe ich die png-Funktion verwendet. –

Verwandte Themen