14

が Figure ハンドルの場合、 を使用するのと同じようにf使用したかったのですが、これはうまくいきませんでした:plot3(..)plot(..)

>> plot3(f, t, real(Y), imag(Y))
Error using plot3
Vectors must be the same lengths.

次に、これを行う方法は次のとおりであることがわかりました。

  1. まず、関連する Figure をcurrentにします。

  2. 次に、plot3(..)関数を使用します。

現在の図が使用しているものを見つけることができますが、gcf(そのハンドルを介して) どのように図を現在の状態にしますか?

4

4 に答える 4

32

この方法には私の個人的な好みがあります:

set(0, 'currentfigure', f);  %# for figures
set(f, 'currentaxes', axs);  %# for axes with handle axs on figure f

これらのコマンドは独自のドキュメントであるためです。私は見つけます

figure(f)

最初の読み取りで混乱するなど-新しい図を作成しますか?または単に既存のものをアクティブにしますか?->コンテキストをさらに読む必要があります。

于 2012-10-08T06:26:01.237 に答える
9

実際には、コマンドにfバックをフィードするのと同じくらい簡単です。figure(..)

figure(f)    %Makes the figure current.

また、私がこのようなことをした場合:

f = figure('IntegerHandle','off');    % With unique, non-reusable handle.
top = subplot(2, 1, 1);
bot = subplot(2, 1, 2);

次に、次のようなコマンドを発行して、 topまたは電流を作成できます。bottom

subplot(top);

これも機能します:

axes(top);

ただし、この 2 種類のハンドルを混在させることはできませaxes(..)ん。subplot(..)figure(..)

于 2012-10-08T04:43:59.230 に答える
4

他の人は、あなたが求めていたものを正確に提供してくれました (軸を作成する方法または現在の軸を図にする方法)。これに対処するための私の好みの方法は、への呼び出しでプロットの親を明示的に指定することplot3です。

ドキュメントを見ると、関数の最初のパラメーターとして親軸を指定できることがわかります。あなたの例でこれをやろうとしたように見えますが、 axesではなくFigureにハンドルを提供しました。

f = figure()
ax = axes('Parent', f)
im = plot3(ax, X, Y, Z);

または、明示的なソリューションを好む

im = plot3(X, Y, Z, 'Parent', ax)

親のこの明示的なパラメーター/値指定の良い点は、すべてのグラフィックス オブジェクトで受け入れられることです。plotやのような関数plot3は、実際には の機能をラップし、line最初に親を渡すという規則を可能にするヘルパー関数です。plotパラメータ/値のアプローチは、高レベルの関数 ( 、plot3imshow) または低レベルのオブジェクト ( lineimage、など)を使用しているかどうかに関係なく、広く受け入れられています。

ここでの 2 つの利点は、MATLAB がプロットを配置する場所を見つけようとするオーバーヘッドを取り除くことと、MATLAB が現在表示されている Figure を変更する必要がなくなり、MATLAB の最も遅いタスクの 1 つである再レンダリングが強制されることです。

于 2016-01-10T13:46:29.580 に答える
0

Figure にハンドル名を付けて、ちょっとした例を挙げてください

  f1 = figure;
  imshow(image1);
  f2 = figure;
  imshow(image2);
  % edit image 1
  figure(f1);
  text(2,3,'done');
于 2014-05-08T17:27:00.610 に答える