Pergunta

Quando você traçar as coisas em Matlab, a série de dados mais recentemente plotado é colocado em cima de tudo o que já está lá. Por exemplo:

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])

Aqui, a linha vermelha é mostrado no topo da linha azul (onde eles se cruzam). Existe alguma maneira de definir "o quão profundo" é desenhada uma linha, para que você possa traçar as coisas abaixo o que já está aí?

Foi útil?

Solução

Use o uistack comando. Por exemplo:

h1 = plot(1:10, 'b');
hold on;
h2 = plot(1:10, 'r');

irá traçar duas linhas com a linha vermelha traçada em cima da linha azul. Se você, em seguida, fazer:

uistack(h1);

a linha azul será trazido para a frente.

Outras dicas

Você também pode fazer isso definindo a ordem do vector crianças dos eixos correntes. Se você fazer o seguinte:

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');

Você vai ver que h é um vetor que contém H1 e H2. A ordem de empilhamento gráfica é representada pela ordem das alças em h. Neste exemplo, para inverter a ordem de empilhamento você poderia fazer:

h = flipud(h);
set(gca, 'Children', h);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top