2009-11-26 22 views
23

Immer wenn ich diesen Code ausführe, würde der erste Plot einfach den vorherigen überschreiben. Gibt es nicht einen Weg in R zu trennen, um zwei Plots zu bekommen?Wie zwei Plots in R zu trennen?

plot(pc) 
title(main='abc',xlab='xx',ylab='yy') 

plot(pcs) 
title(main='sdf',xlab='sdf',ylab='xcv') 

Antwort

14

Versuchen Sie, par zu verwenden, bevor Sie plotten.

0

Wenn Sie die 2 Diagramme in separaten Fenstern oder Dateien haben möchten, können Sie neue Geräte auswählen, bevor Sie die einzelnen Plot-Befehle aufrufen. Siehe:?

Devices

Und

dev.cur

+0

oh ok, danke für all die tollen Vorschläge Jungs, lernte wieder etwas Neues. – phpdash

38

Wenn Sie wollen einfach nur zwei verschiedene Plotten Fenster offen zur gleichen Zeit sehen, Verwenden Sie dev.new, z

plot(1:10) 
dev.new() 
plot(10:1) 

Wenn Sie möchten, dann zwei Parzellen im selben Fenster zeichnen, wie Shane erwähnt, stellen Sie die mfrow Parameter.

par(mfrow = c(2,1)) 
plot(1:10) 
plot(10:1) 

Wenn Sie etwas ein wenig weiter fortgeschritten, um versuchen wollen, dann können Sie einen Blick auf Gitter Grafiken oder ggplot nehmen, die beide für die Schaffung konditionierten Plots sind ausgezeichnet (Flächen, auf denen unterschiedliche Teilmengen von Daten in verschiedenen Rahmen erscheinen).

Ein Gitter Beispiel:

library(lattice) 
dfr <- data.frame(
    x = rep(1:10, 2), 
    y = c(1:10, 10:1), 
    grp = rep(letters[1:2], each = 10) 
) 
xyplot(y ~ x | grp, data = dfr) 

A ggplot Beispiel. (Sie müssen zuerst ggplot von CRAN zum Download bereit.)

library(ggplot2) 
qplot(x, y, data = dfr, facets = grp ~ .) 
#or equivalently 
ggplot(dfr, aes(x, y)) + geom_point() + facet_grid(grp ~ .) 
+0

danke sir^_ ^, dev.new() funktioniert ganz gut für mich – espais

+0

Ich muss dem 'mfcol' Parameter etwas Liebe geben. Es füllt Ihre Diagramme spaltenweise, was mit jedem anderen Objekt in R übereinstimmt (gut, hauptsächlich Matrizen). Habe es gerade entdeckt. Hatte sich immer gewundert, warum die Parzellen zeilenweise gefüllt sind ...glaube nicht, dass ich jemals wieder zu 'mfrow' gehen werde! – MichaelChirico

0

Eine alternative Antwort ist die Handlung als ein Objekt zuweisen, dann können Sie es anzeigen, wenn Sie dh

wollen
abcplot<-plot(pc) title(main='abc',xlab='xx',ylab='yy') 

sdfplot<-plot(pcs) title(main='sdf',xlab='sdf',ylab='xcv') 

abcplot # Displays the abc plot 
sdfplot # Displays the sdf plot 
abcplot # Displays the abc plot again 
+1

Dies funktioniert nicht. 'plot' gibt' NULL' zurück. Sie können die Details des Graphen nicht auf diese Weise speichern. Wenn Sie Grid-basierte Grafiken (z. B. Gitter) verwenden, ist das, was Sie vorschlagen, möglich, z. 'p1 <- xyplot (y ~ x); drucken (p1) '. –

4

Sie versuchen könnte auch das Layout Befehl:

versuchen layout(1:2)

plot(A)  
plot(B) 
2

try Befehl x11() vor jeder Handlung, hier ein Beispiel:

x11() 
plot(1:10) 
x11() 
plot(rnorm(10)) 

Dies wird zu verschiedenen Plot-Fenstern führen. Sie können einen "Par" -Befehl zu jedem dieser x11() Fenster hinzufügen und eine größere Vielfalt an Plots erhalten, d. H. 4 Plots in einem Fenster, während ein großes Plot in einem anderen Fenster angezeigt wird.