グラフ描画時、座標軸​パネルの名前が変更さ​れてしまう

1 Ansicht (letzte 30 Tage)
yuuji yamada
yuuji yamada am 24 Okt. 2018
Kommentiert: yuuji yamada am 30 Okt. 2018
matlab 2018aを使用し、matlab gui にてツールを作っています。 座標軸パネルに Tag名 'axes_test'を設定し、ボタンを押下するとグラフが描画されるツールを作っています。 ところが座標軸パネルにグラフを描画するとTag名が変わってしまうことが判明しました。 panel = findobj(form, 'Tag', 'axes_test'); plot(panel, ・・・・・・); ←←← このメソッドを実行するとpanelのTag名が変わってしまう。
Tag名が変更されてしまうため、ボタンを押下時、一回目は座標軸パネルにグラフが描画されるのですが、 2回目以降の処理では座標軸パネル'axes_test'が見つからずpanelオブジェクトがemptyになり、エラーに なってしまいます。 現在、回避手段としてグラフが描画される前にTag名を変数に退避しておいてグラフ描画後、退避していたTag名を再設定する ということをやっています。何か他に回避方法はありますでしょうか。 それとも座標軸パネルの名前が変更されてしまうのは仕様でしょうか?

Akzeptierte Antwort

michio
michio am 24 Okt. 2018
下記コードでも現象が再現しました。仕様かどうか確認し情報があり次第アップデートします。
form = gcf;
axes1 = gca;
axes1.Tag = 'axes_test';
panel = findobj(form, 'Tag', 'axes_test');
panel.Tag % ans = 'axes_test'
plot(panel,rand(10,2));
panel.Tag % ans = 0×0 の空の char 配列
  2 Kommentare
michio
michio am 28 Okt. 2018
確認しましたところ、plot で axes のプロパティ値が初期化されるのは仕様通りとのことでした。Tag を含むプロパティ値を保持する場合には、プロットを重ね書きするときにも使用する hold on か、NextPlot プロパティを replacechiledren か add に設定しておく方法があります。
下記コード例も参考にしていただけますと幸いです。
% Example 1:
form = gcf;
axes1 = gca;
axes1.Tag = 'axes_test';
panel = findobj(form, 'Tag', 'axes_test');
panel.Tag % ans = 'axes_test'
hold(panel,'on')
plot(panel,rand(10,2));
panel.Tag
% Example 2:
form = gcf;
axes1 = gca;
axes1.Tag = 'axes_test';
panel = findobj(form, 'Tag', 'axes_test');
panel.Tag % ans = 'axes_test'
panel.NextPlot = 'replacechildren'; % or 'add'
plot(panel,rand(10,2));
panel.Tag
yuuji yamada
yuuji yamada am 30 Okt. 2018
御回答ありがとうございます。 提示頂いた方法でうまくいきました。

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu 座標軸の外観 finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!