| Graphics | ![]() |
例題 - 関数newplotの使用
newplotの使用を説明するために、つぎの例では、複数ラインのプロットに対して、異なるカラーを使用する代わりに異なるラインスタイルを自動的に繰り返し使用する、組み込み関数plotと類似した関数を作成します。
function my_plot(x,y)
cax = newplot; % newplotはカレントAxesのハンドル番号を出力します。
LSO = ['- ';'--';': ';'-.'];
set(cax,'FontName','Times','FontAngle','italic')
set(get(cax,'Parent'),'MenuBar','none') %
line_handles = line(x,y,'Color','b');
style = 1;
for i = 1:length(line_handles)
if style > length(LSO), style = 1;end
set(line_handles(i),'LineStyle',LSO(style,:))
style = style + 1;
end
grid on
関数my_plotは、正式でない関数lineの書式を使って、データをプロットします。これは組み込み関数plot同様に入力引数の大きさに柔軟に対応します。関数line はFigureやAxesのNextPlotプロパティの値をチェックしません。しかし、my_plotはnewplotを呼び出すので、デフォルト値では高水準関数plot と同様の挙動を示し、my_plotは、呼び出されるたびにAxesを消去しリセットします。
my_plotは、newplotが出力するハンドル番号を使って、ターゲットのFigureとAxesにアクセスします。この例では、Axesのフォントのプロパティを設定し、Figureのメニューバーを無効にします。AxesのParentプロパティからFigureのハンドル番号がどのように取り出されるのかに注意してください。
my_plot(1:10,peaks(10))
基本的なプロットM-ファイル構造
この例は、グラフィックスM-ファイルの基本的構造を示しています。
NextPlotプロパティに従って、ターゲットのAxesのハンドル番号を得るために、newplotを呼び出します。newplotによって出力されるAxesのハンドル番号を参照し、Axesの任意のプロパティを設定するかFigureのハンドル番号を取り出します。NextPlotプロパティに対するMATLABのデフォルトの設定値により、MATLABの標準の挙動に則したM-ファイルを容易に作成できます。Figureウィンドウを再利用しますが、それぞれの新しいグラフに対するAxesを消去し、リセットします。これらのプロパティを他の値に設定することによって異なる挙動を実現することができます。
子オブジェクトのみの置換 -- replacechildren
NextPlotをreplacechildren値に設定すると、newplotはFigureまたはAxesから子オブジェクトを削除しますが、プロパティ値は(Childrenプロパティに含まれるハンドル番号のリストを除き)リセットしません。
これは、プロパティを設定した後で、それをリセットしないで、続くグラフに使用したいときに役に立します。たとえば、コマンドラインでつぎのように入力すると、
set(gca,'ColorOrder',[0 0 1],'LineStyleOrder','-|--|:|-.',... 'NextPlot','replacechildren') plot(x,y)
plotは、カレントAxes内部に限り、前節のM-ファイルのmy_plotと同じ出力を作成します。plotを呼び出すと既存のグラフを消去(すなわちAxesの子オブジェクトを削除)しますが、Axesのプロパティはリセットしません。ColorOrderおよびLineStyleOrderプロパティに設定した値はそのまま有効です。
| 関数newplotによるグラフィック出力 | ホールド状態のテスト | ![]() |