カスタム プロパティ表示をもつチャート クラス
この例では、プロパティのサブセットのみをリストするカスタム プロパティ表示をもつチャート クラスの定義方法を説明します。以下のコードは、matlab.mixin.CustomDisplay
クラスの getPropertyGroups
メソッドをオーバーロードする方法を示しています。例ではまた、matlab.graphics.chartcontainer.ChartContainer
基底クラスから派生するチャートの基本的なコーディング パターンも示されます。この例は、チャート作成のコーディング手法に習熟するために使用するか、または作成予定のクラスの基礎として使用できます。
クラスを定義するために、以下のコードをエディターにコピーし、SmoothPlotCustomDisplay.m
という名前で書き込み可能なフォルダーに保存します。
classdef SmoothPlotCustomDisplay < matlab.graphics.chartcontainer.ChartContainer % c = SmoothPlotCustomDisplay('XData',X,'YData',Y,Name,Value,...) % plots a dotted line of the coordinates in X and Y with a smoothed % version of the line. You can also specify additonal name-value % arguments, such as 'SmoothColor' and 'SmoothWidth'. properties XData (1,:) double = NaN YData (1,:) double = NaN SmoothColor {validatecolor} = [0.9290 0.6940 0.1250] SmoothWidth (1,1) double = 2 end properties(Access = private,Transient,NonCopyable) OriginalLine (1,1) matlab.graphics.chart.primitive.Line SmoothLine (1,1) matlab.graphics.chart.primitive.Line end methods(Access = protected) function setup(obj) % Get the axes ax = getAxes(obj); % Create the original and smooth lines obj.OriginalLine = plot(ax,NaN,NaN,'LineStyle',':'); hold(ax,'on') obj.SmoothLine = plot(ax,NaN,NaN,'LineStyle','-',... 'Color',[0.9290 0.6940 0.1250],'LineWidth',2); hold(ax,'off') end function update(obj) % Update line data obj.OriginalLine.XData = obj.XData; obj.OriginalLine.YData = obj.YData; obj.SmoothLine.XData = obj.XData; obj.SmoothLine.YData = createSmoothData(obj); % Update line color and width obj.SmoothLine.Color = obj.SmoothColor; obj.SmoothLine.LineWidth = obj.SmoothWidth; end function propgrp = getPropertyGroups(obj) if ~isscalar(obj) % List for array of objects propgrp = getPropertyGroups@matlab.mixin.CustomDisplay(obj); else % List for scalar object propList = {'SmoothColor','XData','YData'}; propgrp = matlab.mixin.util.PropertyGroup(propList); end end function sm = createSmoothData(obj) % Calculate smoothed data v = ones(1,10)*0.1; sm = conv(obj.YData,v,'same'); end end end
クラス ファイルを保存した後は、チャートのインスタンスを作成できます。チャートを作成する際にセミコロンを省略して、カスタマイズされた表示を確認します。
x = 1:1:100; y = 10*sin(x/15)+8*sin(10*x+0.5); c = SmoothPlotCustomDisplay('XData',x,'YData',y)
c = SmoothPlotCustomDisplay with properties: SmoothColor: [0.9290 0.6940 0.1250] XData: [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... ] (1x100 double) YData: [-6.3714 9.3040 -4.3583 5.3084 5.1309 ... ] (1x100 double) Use GET to show all properties