Main Content

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, ymargin 값을 ChartContainer 생성자가 받는 이름-값 쌍의 인수로 변환하고 args에 결과를 저장합니다.

  • 사용자 지정 이름-값 쌍의 인수를 args의 끝에 추가합니다.

  • argsChartContainer 생성자 메서드에 전달합니다.

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이라는 프로그램 파일을 만드십시오. 다음 단계를 따라 클래스를 정의하십시오.

단계구현

ChartContainer 기본 클래스에서 파생시킵니다.

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

x, ymargin 값과 선택적 속성 이름-값 쌍의 인수를 받는 사용자 지정 생성자 메서드를 구현합니다.

    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

setup 메서드를 구현합니다.

    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

update 메서드를 구현합니다.

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

참고 항목

클래스

함수

속성

관련 항목