チャート クラスのコンストラクターの作成
チャートを ChartContainer 基底クラスのサブクラスとして作成する場合、基底クラスは、チャート プロパティの設定に用いるオプションの名前と値のペアの引数を受け入れる既定のコンストラクターを提供します。たとえば、次のコマンドは ConfidenceChart というクラスのインスタンスを作成します。
ConfidenceChart('XData',x,'YData',y,'ConfidenceMargin',0.15,'Color',[1 0 0])
カスタム コンストラクター メソッドを作成することにより、個々の引数値およびオプションの名前と値のペアの引数を受け入れるインターフェイスを提供することができます。たとえば、カスタム コンストラクターを設計して ConfidenceChart の呼び出し構文を変更し、次のコマンドがいずれもチャート作成の有効な方法となるようにできます。
ConfidenceChart(x,y,0.15)
ConfidenceChart(x,y,0.15,'Color',[1 0 0])コンストラクター メソッドを作成する際には、以下を行います。
関数宣言で、サポート対象とする入力引数を指定する。
vararginを最後の入力引数として含め、ユーザーの指定するプロパティの名前と値のペアの引数をすべて取得します。チャート オブジェクトへの他のすべての参照より前に
ChartContainerコンストラクターを呼び出す。
たとえば、ConfidenceChart クラスの下記のコンストラクター メソッドは、次のタスクを実行します。
入力引数の数を確認し、数が 3 未満であればエラーを返す。
x、y、marginの値をChartContainerコンストラクターが受け入れる名前と値のペアの引数に変換し、結果をargsに保存する。ユーザー指定の名前と値のペアの引数をすべて
argsの最後に追加する。argsをChartContainerコンストラクター メソッドに渡す。
methods
function obj = ConfidenceChart(x,y,margin,varargin)
% Check for at least three inputs
if nargin < 3
error('Not enough inputs');
end
% Convert x, y, and margin into name-value pairs
args = {'XData', x, 'YData', y, 'ConfidenceMargin', margin};
% Combine args with user-provided name-value pairs
args = [args varargin];
% Call superclass constructor method
obj@matlab.graphics.chartcontainer.ChartContainer(args{:});
end
end例: カスタム コンストラクターをもつ信頼限界チャート
この例では、単一値の入力引数およびオプションとして名前と値のペアの引数を受け入れるカスタム コンストラクターをもったチャートの作成方法を説明します。チャートでは、ラインを、マーカーおよび周囲の信頼余裕とともにプロットします。
MATLAB® パス上にあるフォルダー内に ConfidenceChart.m というプログラム ファイルを作成します。以下の手順に従ってクラスを定義します。
| 手順 | 実装 |
|---|---|
|
classdef ConfidenceChart < matlab.graphics.chartcontainer.ChartContainer |
パブリック プロパティを定義します。 |
properties
XData (1,:) double = NaN
YData (1,:) double = NaN
ConfidenceMargin (1,1) double = 0.15
MarkerSymbol (1,:) char = 'o'
Color (1,3) double {mustBeGreaterThanOrEqual(Color,0),...
mustBeLessThanOrEqual(Color,1)} = [1 0 0]
end |
プライベート プロパティを定義します。 |
properties(Access = private,Transient,NonCopyable)
LineObject (1,1) matlab.graphics.chart.primitive.Line
PatchObject (1,1) matlab.graphics.primitive.Patch
end |
| methods
function obj = ConfidenceChart(x,y,margin,varargin)
% Check for at least three inputs
if nargin < 3
error('Not enough inputs');
end
% Convert x, y, and margin into name-value pairs
args = {'XData', x, 'YData', y, 'ConfidenceMargin', margin};
% Combine args with user-provided name-value pairs.
args = [args varargin];
% Call superclass constructor method
obj@matlab.graphics.chartcontainer.ChartContainer(args{:});
end
end |
|
methods(Access = protected)
function setup(obj)
% get the axes
ax = getAxes(obj);
% Create Patch and objects
obj.PatchObject = patch(ax,NaN,NaN,'r','FaceAlpha',0.2,...
'EdgeColor','none');
hold(ax,'on')
obj.LineObject = plot(ax,NaN,NaN);
hold(ax,'off')
end |
|
function update(obj) % Update XData and YData of Line obj.LineObject.XData = obj.XData; obj.LineObject.YData = obj.YData; % Update patch XData and YData x = obj.XData; obj.PatchObject.XData = [x x(end:-1:1)]; y = obj.YData; c = obj.ConfidenceMargin; obj.PatchObject.YData = [y+c y(end:-1:1)-c]; % Update colors obj.LineObject.Color = obj.Color; obj.PatchObject.FaceColor = obj.Color; % Update markers obj.LineObject.Marker = obj.MarkerSymbol; end end end |
次に、ConfidenceChart のインスタンスを作成します。x 座標と y 座標、余裕の値、およびマーカー記号を指定します。
x = 0:0.2:10; y = besselj(0,x); ConfidenceChart(x,y,0.20,'MarkerSymbol','>');
