| 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の場合のみ表示を変更fview(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の保護 | ![]() |