Trazar una serie de datos debajo de otra
Pregunta
Cuando trazas cosas en Matlab, la serie de datos trazados más recientemente se coloca encima de lo que ya está allí. Por ejemplo:
figure; hold on
plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1])
plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0])
Aquí, la línea roja se muestra en la parte superior de la línea azul (donde se intersecan). ¿Hay alguna forma de establecer " cuán profundo " se dibuja una línea, para que pueda trazar las cosas debajo de lo que ya existe.
Solución
Usa el comando uistack . Por ejemplo:
h1 = plot(1:10, 'b');
hold on;
h2 = plot(1:10, 'r');
trazará dos líneas con la línea roja trazada en la parte superior de la línea azul. Si luego haces:
uistack(h1);
la línea azul será traída al frente.
Otros consejos
También puede lograr esto estableciendo el orden del vector secundario de los ejes actuales. Si haces lo siguiente:
figure; hold on
h1 = plot(sin(linspace(0,pi)),'linewidth',4,'color',[0 0 1]);
h2 = plot(cos(linspace(0,pi)),'linewidth',4,'color',[1 0 0]);
h = get(gca, 'Children');
verá que h es un vector que contiene h1 y h2. El orden de apilamiento gráfico se representa por el orden de los controladores en h. En este ejemplo, para revertir el orden de apilamiento podría hacer:
h = flipud(h);
set(gca, 'Children', h);