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によるグラフィック出力 | ホールド状態のテスト | ![]() |