2012-03-02 10 views
16

Tengo varias figuras abiertas, y quiero actualizarlas de forma independiente durante el tiempo de ejecución. El siguiente ejemplo de juguete debe aclarar mi intención:¿Cómo puedo especificar a qué figura debe ir una gráfica?

clf; 

figure('name', 'a and b'); % a and b should be plotted to this window 
hold on; 
ylim([-100, 100]); 

figure('name', 'c'); % only c should be plotted to this window 

a = 0; 
b = []; 
for i = 1:100 
    a = a + 1; 
    b = [b, -i]; 
    c = b; 
    xlim([0, i]); 
    plot(i, a, 'o'); 
    plot(i, b(i), '.r'); 
    drawnow; 
end 

El problema aquí es que cuando abro el segundo figure, no puedo decir a los plot funciones al diagrama de la primera vez de la segunda (y sólo c debería haber trazado a la segunda).

Respuesta

17

Usted puede usar algo como

figure(1) 
plot(x,y) % this will go on figure 1 

figure(2) 
plot(z,w) % this will go on another figure 

El comando también fijará la figura visible y por encima de todo.

Puede cambiar hacia adelante y hacia atrás entre las figuras según sea necesario emitiendo el mismo comando figure. Como alternativa, puede usar el mango de la figura así:

h=figure(...) 

y luego emitir figure(h) en lugar de utilizar los índices numéricos. Con esta sintaxis, también puede evitar que la cifra de aparecer en la parte superior mediante el uso de

set(0,'CurrentFigure',h) 
13

Puede especificar los ejes-objeto en la trama de comando. Ver aquí:

http://www.mathworks.de/help/techdoc/ref/plot.html

Por lo tanto, abrir una figura, inserte los ejes, guardar el ID de los ejes del objeto, y luego trazar en él:

figure 
hAx1 = axes; 
plot(hAx1, 1, 1, '*r') 
hold on 

figure 
hAx2 = axes; 
plot(hAx2, 2, 1, '*r') 
hold on 


plot(hAx2, 3, 4, '*b') 
plot(hAx1, 3, 3, '*b') 

alternativa, puede usar gca en lugar de crear el objeto de ejes usted mismo (¡porque se crea automáticamente dentro de la figura real, cuando no existe!)

figure 
plot(1,1) 
hAx1 = gca; 
hold on 

figure 
plot(2,2) 

plot(hAx1, 3, 3) 

Ver la siguiente jerarquía que representa la relación entre las figuras y los ejes

enter image description here

De http://www.mathworks.de/help/techdoc/learn_matlab/f3-15974.html.

+1

¿Pero por qué manipular el eje? ¿Qué pasa si no quiero hachas en absoluto? Esto parece un poco intrincado para mí (nuevo para Matlab). ¿Podría explicar por favor? –

+3

Porque algo que trazas SIEMPRE entra en un objeto-eje (no puedes trazar sin ejes);) Cuando no usas 'axes'-command,' plot' los crea automáticamente cuando la figura no los contiene. Entonces es la forma correcta de hacerlo. ver mi publicación editada! – tim

+1

Gracias, pero aún me pregunto, por qué el comando 'plot' usa el mango del eje en lugar de la manecilla de la figura, parece ser más intuitivo. –

Cuestiones relacionadas