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

1 次查看(过去 30 天)
yuuji yamada
yuuji yamada 2018-10-24
评论: yuuji yamada 2018-10-30
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名を再設定する ということをやっています。何か他に回避方法はありますでしょうか。 それとも座標軸パネルの名前が変更されてしまうのは仕様でしょうか?

采纳的回答

michio
michio 2018-10-24
下記コードでも現象が再現しました。仕様かどうか確認し情報があり次第アップデートします。
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 个评论
michio
michio 2018-10-28
確認しましたところ、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 2018-10-30
御回答ありがとうございます。 提示頂いた方法でうまくいきました。

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 座標軸の外観 的更多信息

Community Treasure Hunt

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

Start Hunting!