Как я могу указать, на какой фигуре должен идти сюжет?
Я открываю несколько фигур, и я хочу обновлять их независимо во время выполнения. Следующий пример игрушки должен прояснить мое намерение:
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
Проблема заключается в том, что когда я открываю второй figure
, я не могу сказать, что функции plot
будут отображать первый, а не второй (и только c
должен быть нанесен на второй).
Ответы
Ответ 1
Вы можете использовать что-то вроде
figure(1)
plot(x,y) % this will go on figure 1
figure(2)
plot(z,w) % this will go on another figure
Команда также установит фигуру видимой и поверх всего.
Вы можете переключаться между цифрами по необходимости, выдавая ту же команду figure
. В качестве альтернативы вы также можете использовать ручку на рисунке:
h=figure(...)
а затем введите figure(h)
вместо использования числовых индексов. С помощью этого синтаксиса вы также можете предотвратить появление фигуры сверху с помощью
set(0,'CurrentFigure',h)
Ответ 2
вы можете указать axes-object в команде plot, см. здесь: http://www.mathworks.de/help/techdoc/ref/plot.html
Итак, откройте фигуру, вставьте оси и сохраните идентификатор объекта осей и запишите в него:
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')
альтернативно вы можете использовать gca
вместо создания объекта axes самостоятельно (потому что он автоматически создается в фактической фигуре, когда он не существует!)
figure
plot(1,1)
hAx1 = gca;
hold on
figure
plot(2,2)
plot(hAx1, 3, 3)
EDIT:
(из http://www.mathworks.de/help/techdoc/learn_matlab/f3-15974.html)