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','>');
