2

Matlab を使用して一部の GUI スタッフをコーディングしています。そして、「subaxis」メソッド(Matlab FX subaxis.mでダウンロードできます)を使用して、指定された 1 つの「軸」にサブフィギュアを含む図をプロットしたいと考えています。

プログラムは、最初はまったく正しく動作します。サブフィギュアはワンクリックボタンで更新されます。その後、エラーがポップアップします。問題を単純化し、いくつかのテスト コードを次のように記述します。

% Specify an 'axes' in my GUI (here is an example of axes handle called 'ax')
ax = axes;
axes(ax); 
cla(ax, 'reset');

% Plot something using 'subaxis' with multiple subfigures 
x = 0:0.1:10;
spacing = 0.0;
subaxis(3,1,1,'Spacing',spacing);
plot(x,rand(size(x)),'k')
legend('D','Location','NorthWest')
ylim([-0.2 1])
set(gca, 'box','off')
set(gca,'XAxisLocation','top')

subaxis(2,'Spacing',spacing);
plot(x,rand(size(x)),'r')
legend('C','Location','NorthWest')
ylim([-0.2 1])
set(gca,'xtick',[],'box','off','xcolor','w')

subaxis(3,'Spacing',spacing);
plot(x,rand(size(x)),'b')
legend('B','Location','NorthWest')
set(gca, 'box','off')

この時点でプログラムは問題なく、期待通りの動作をしました。ここで、ボタンを押してこれらのサブフィギュアを更新しますが、「ax」と呼ばれる指定された軸にサブフィギュアをプロットしたいと考えています。

axes(ax); 
cla(ax, 'reset');

x = 0:0.1:10;
spacing = 0.0;
subaxis(3,1,1,'Spacing',spacing);
plot(x,rand(size(x)),'k')
legend('D','Location','NorthWest')
ylim([-0.2 1])
set(gca, 'box','off')
set(gca,'XAxisLocation','top')

subaxis(2,'Spacing',spacing);
plot(x,rand(size(x)),'r')
legend('C','Location','NorthWest')
ylim([-0.2 1])
set(gca,'xtick',[],'box','off','xcolor','w')

subaxis(3,'Spacing',spacing);
plot(x,rand(size(x)),'b')
legend('B','Location','NorthWest')
set(gca, 'box','off')

エラーが表示されます!!!

Error using axes
Invalid object handle

エラー情報が非常に短いため、どうすればよいかわかりません。サブ軸は特定の「軸」に一度しかプロットできないようです。

どんな助けでも大歓迎です。どうもありがとう。A.

4

1 に答える 1

0

2 番目のコードの先頭から次の 2 行を削除します。

axes(ax); 
cla(ax, 'reset');

これで、matlab は現在のプロットのグラフを更新します。これを通常の (GUI 以外の) matlab ファイルでテストしたところ、正常に動作しました。うまくいかない場合は、関連する問題がある可能性があるため、GUI の詳細を投稿してください。

于 2014-03-06T17:25:24.947 に答える