2012-03-02 12 views
16

私は複数の図を開いており、実行時にそれらを独立して更新したいと考えています。次のおもちゃの例では、私の意図を明確にする必要がありますプロットを行う図形を指定するにはどうすればよいですか?

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を開いたときに、私が代わりに第二(とのみcがあるべきの最初の1にプロットするためにplot機能を伝えることができないということです2番目にプロット)。

答えて

17

は、コマンドにも見えるし、すべての上に数字を設定します

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

plot-commandでaxes-objectを指定できます。だから

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

姿を開いて、軸を挿入し、オブジェクトの軸のIDを保存し、それにプロットします:こちらを参照してください

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

また、あなたをAxesオブジェクトを自分で作成する代わりにgcaを使用できます(存在しない場合は実際の図形内に自動的に作成されるため!)

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

figure 
plot(2,2) 

plot(hAx1, 3, 3) 

数字とhttp://www.mathworks.de/help/techdoc/learn_matlab/f3-15974.htmlから

enter image description here

を軸との関係を表す次のような階層を参照してください。

+1

なぜ軸を操作するのですか?軸をまったく必要としない場合はどうすればいいですか?これは私のためにちょっと混乱しているようです(Matlabを初めて)。説明していただけますか? –

+3

常にプロットするものはAxesオブジェクトに入ります(Axesを持たないプロットはできません); 'axes'コマンドを使用しないと、Figureがそれらを含んでいないときに' plot'が自動的に作成します。それは正しい道のりです。私の編集したポストを見てください! – tim

+1

ありがとうございます。でも、私はまだ 'plot'コマンドがfigureハンドルの代わりに軸ハンドルを使用する理由を疑問視しています。これはより直感的なようです。 –

関連する問題