web-dev-qa-db-fra.com

Comment puis-je spécifier à quel chiffre un tracé doit aller?

J'ai plusieurs chiffres ouverts et je veux les mettre à jour indépendamment pendant l'exécution. L'exemple de jouet suivant devrait clarifier mon intention:

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

Le problème ici est que lorsque j'ouvre le second figure, je ne peux pas dire aux fonctions plot de tracer vers le premier au lieu du second (et seul c doit être tracé à la seconde).

17
István Zachar

Vous pouvez utiliser quelque chose comme

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

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

La commande mettra également la figure visible et au-dessus de tout.

Vous pouvez basculer entre les chiffres selon les besoins en exécutant la même commande figure. Alternativement, vous pouvez également utiliser la poignée de la figure:

h=figure(...)

puis lancez figure(h) au lieu d'utiliser des index numériques. Avec cette syntaxe, vous pouvez également empêcher la figure d'apparaître en haut en utilisant

set(0,'CurrentFigure',h)
19
mindcorrosive

Vous pouvez spécifier l'objet axes dans la commande plot. Vois ici:

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

Alors, ouvrez une figure, insérez les axes, enregistrez l'id de l'objet axes, puis tracez-y:

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

Alternativement, vous pouvez utiliser gca au lieu de créer vous-même l'objet axes (car il est automatiquement créé dans la figure réelle, lorsqu'il n'existe pas!)

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

figure
plot(2,2)

plot(hAx1, 3, 3)

Voir la hiérarchie suivante représentant la relation entre les figures et les axes

enter image description here

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

15
tim