Нарисуйте ряд данных под другим - PullRequest
7 голосов
/ 16 октября 2008

Когда вы строите объекты в Matlab, самые последние построенные ряды данных помещаются поверх всего, что там уже есть. Например:

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

Здесь красная линия показана сверху синей линии (там, где они пересекаются). Есть ли способ установить «насколько глубоко» будет проведена линия, чтобы вы могли рисовать вещи ниже того, что уже там?

Ответы [ 2 ]

20 голосов
/ 16 октября 2008

Используйте команду uistack . Например:

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

построит две линии с красной линией поверх синей линии. Если вы затем делаете:

uistack(h1);

синяя линия будет выведена на фронт.

4 голосов
/ 16 октября 2008

Вы также можете сделать это, установив порядок дочерних векторов текущих осей. Если вы делаете следующее:

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

вы увидите, что h - это вектор, содержащий h1 и h2. Графический порядок расположения представлен порядком маркеров в h. В этом примере, чтобы изменить порядок наложения, вы можете сделать:

h = flipud(h);
set(gca, 'Children', h);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...