2009-11-26 7 views
23

Cada vez que ejecuto este código, el primer gráfico simplemente sobrescribirá el anterior. ¿No hay forma de que R se separe para obtener dos tramas?¿Cómo separar dos parcelas en R?

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

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

Respuesta

14

Pruebe usar par antes de trazar.

par(mfrow = c(2, 1)) 
0

Si desea 2 tramas en ventanas o archivos separados, puede seleccionar nuevos dispositivos antes de llamar a cada comando de trazado. Ver:??

dispositivos

Y,

dev.cur

+0

oh bien, gracias por todas las buenas sugerencias chicos, aprendí algo nuevo otra vez. – phpdash

38

Si lo que desea es ver dos ventanas de trazado diferentes abiertas al mismo tiempo, use dev.new, por ej.

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

Si desea dibujar dos parcelas en la misma ventana, entonces, como se ha mencionado Shane, establezca el parámetro mfrow.

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

Si quieres probar algo un poco más avanzado, a continuación, puede echar un vistazo a los gráficos de celosía o ggplot, ambos de los cuales son excelentes para la creación de parcelas acondicionado (parcelas en las diferentes subconjuntos de datos aparecen en diferentes marcos)

Un ejemplo de celosía:

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) 

Un ejemplo ggplot. (Usted tendrá que descargar ggplot de Cran primero.)

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

gracias señor^_ ^, dev.new() funciona bastante bien para mí – espais

+0

Tengo que dar algo de amor al parámetro 'mfcol'. Llena tus parcelas en columnas, lo cual está en línea con la forma en que todos los demás objetos en R se llenan (bueno, principalmente matrices). Acabo de descubrirlo. Siempre me he estado preguntando por qué las parcelas están llenas de filas ...¡No creas que alguna vez volveré a 'mfrow'! – MichaelChirico

0

una respuesta alternativa es asignar la trama como un objeto, entonces se puede mostrar que cuando se quiere decir

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

Esto no funciona. 'plot' devuelve' NULL'. No puede guardar los detalles del gráfico de esta manera. Si usa gráficos basados ​​en 'grid' (por ejemplo, 'enrejado'), lo que sugiere es posible, p. 'p1 <- xyplot (y ~ x); imprimir (p1) '. –

4

Usted también puede probar con el comando de diseño:

Trate layout(1:2)

plot(A)  
plot(B) 
2

orden Try x11() antes de cada parcela, he aquí un ejemplo:

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

Esto dará lugar a diferentes ventanas de la trama. Puede agregar el comando "par" a cualquiera de estas ventanas x11() y obtener más variedad de parcelas, es decir, 4 parcelas en una ventana, mientras que una gran parcela en otra ventana.

Cuestiones relacionadas