Clear Filters
Clear Filters

appdesigne​rでyyaxisをr​ightに設定した時​のy軸メモリのリセッ​ト方法

5 views (last 30 days)
s
s on 5 Nov 2023
Commented: Atsushi Ueno on 5 Nov 2023
appdesignerでaxisをleftとrightでそれぞれ設定し、yyaxisがrightの時、元々プロットしてあったlineを削除し、新しくplotするとき、Y軸メモリ間隔がリセットされません。Y軸メモリをリセットする方法を教えてください。
・mファイルで実行した場合
clear; clc; close;
ax = axes;
x = 1:100; % Xのデータ
y_left = 2.*x; % 第1軸のyのデータ(左Y軸)
yyaxis(ax, 'left') % 左のY軸を有効
line1 = plot(x,y_left); % 図のプロット
yyaxis(ax, 'right') % 右Y軸を有効
y_right1 = x.^2; % 第2軸のYのデータ(右Y軸)
line2 = plot(x,y_right1); % 図のプロット
ax.YTick = 0.9 * min( y_right1 ) : 500 : 1.1 * max( y_right1 );
delete(line2); % 右Y軸を有効にしたプロット図を削除
ax.YTick = []; % 右Y軸のメモリを削除
ax.YTickMode = "auto"; % 右Y軸のメモリ間隔を「manual」→「auto」に変更
y_right2 = x.^4; % 右Y軸のYのデータ(右Y軸)
line2 = plot(x,y_right2); % メモリ間隔は最適に配置される
appdesignerでなく、普通のmファイルのテキストで上記のコードを実行すると、右Y軸のデータを削除(delete(line2) )し、再度、右Y軸にプロットすると、Y軸のメモリ間隔は最適に配置されます(deleteで消す前の図の時のY軸のメモリ間隔が残らずにリセットされる。)
しかし、appdesignerで以下のようにaxisとcheakboxを配置し、cheakboxが押された時にmakefig関数を実行するアプリを作ると、y軸メモリがdeleteで消したプロット図のメモリ間隔がずっと残り、deleteした後に再度プロットするとメモリ間隔が変になってしまいます。
cheakboxを押した時に実行されるmakefig関数は以下の通り。(内容はmファイルで実行した時の流れと同じ)
function [YRight] = makefig(AppAx , YRight)
x = 1:100; % Xのデータ
y_left = 2.*x; % 第1軸のyのデータ(左Y軸)
yyaxis(AppAx , 'left') % 左のY軸を有効
L1 = plot(AppAx,x,y_left); % 図のプロット
yyaxis(AppAx , 'right') % 右Y軸を有効
y_right1 = x.^2; % 第2軸のYのデータ(右Y軸)
YRight = plot(AppAx,x,y_right1); % 図のプロット
AppAx.YTick = 0.9 * min( y_right1 ) : 500 : 1.1 * max( y_right1 );
delete(YRight); % 右Y軸を有効にしたプロット図を削除
ax.YTick = []; % 右Y軸のメモリを削除
ax.YTickMode = "auto"; % 右Y軸のメモリ間隔を「manual」→「auto」に変更
y_right2 = x.^4; % 右Y軸のYのデータ(右Y軸)
% Y軸のメモリ間隔がリセットされない、delete関数を実行する前のY軸の間隔になる
YRight = plot(AppAx,x,y_right2); % メモリ間隔が変になる
end
引数の一つ目にアプリの座標軸であるaxis、引数の二つ目に、第二軸のプロット線を渡しています。
また、makefig関数の返り値である「YRight」はappdesinger側でプロバティとして設定しています。
mファイルとappdesignerでコードの流れは一緒なのに、Y軸のメモリがmファイル側ではリセットされるのに、appdesingerではリセットされない原因と対処方法がわかるかたいましたら、教えていただけると幸いです。

Answers (0)

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!