chart 클래스의 생성자 작성하기
차트를 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
생성자를 호출한 후에 chart 객체에 대한 다른 모든 참조를 지정하십시오.
예를 들어, 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','>');