필터 지우기
필터 지우기

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

조회 수: 5 (최근 30일)
s
s 2023년 11월 5일
댓글: Atsushi Ueno 2023년 11월 5일
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ではリセットされない原因と対処方法がわかるかたいましたら、教えていただけると幸いです。
  댓글 수: 1
Atsushi Ueno
Atsushi Ueno 2023년 11월 5일
再現しました@MATLAB R2017a

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Grid Lines, Tick Values, and Labels에 대해 자세히 알아보기

제품


릴리스

R2023b

Community Treasure Hunt

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

Start Hunting!