Graphics | ![]() ![]() |
ホールド状態のテスト
新しいグラフィックスオブジェクトに適合するように、M-ファイルがAxesの外観を変更しなければならない状況があります。たとえば、前の例からのM-ファイルmy_plot
を3次元データに対応させる場合、入力データがz座標をもつときに表示を3次元に設定することは意味があります。
しかし、親オブジェクトのAxesまたはFigureのプロパティを変更する前に、MATLABの高水準ルーチンの挙動と矛盾しないように、hold
がon
であるかどうかをテストすることは得策です。hold
がon
の場合、AxesとFigureのNextPlot
プロパティはいずれもadd
に設定されています。
M-ファイルのmy_plot3
は3次元データを受け入れ、また、ishold
を使って、ホールド状態をチェックし、表示を変更するかどうかを決めます。
function my_plot3(x,y,z) cax = newplot; hold_state = ishold; %ishold
は現在のホールド状態をテスト LSO = ['- ';'--';': ';'-.']; if nargin == 2 hlines = line(x,y,'Color','k'); if~
hold_state % holdがoffの場合のみ表示を変更f
view(2) end elseif nargin == 3 hlines = line(x,y,z,'Color','k'); if~
hold_state% holdがoffの場合のみ表示を変更
view(3) end end ls = 1; for hindex = 1:length(hlines) if ls > length(LSO),ls = 1;end set(hlines(hindex),'LineStyle',LSO(ls,:)) ls = ls + 1; end
my_plot3
を呼び出したときにhold
がon
ならば、表示を変更しません。hold
がoff
ならば、入力引数が2つか3つかによって、my_plot3
は表示を2次元または3次元に設定します。
![]() | 例題 - 関数newplotの使用 | FigureとAxesの保護 | ![]() |