В этом примере показано, как определить класс диаграмм с пользовательским отображением свойств, в котором отображается только подмножество свойств. Следующий код демонстрирует, как перегружать getPropertyGroups способ matlab.mixin.CustomDisplay класс. Пример также демонстрирует базовый шаблон кодирования для диаграмм, которые происходят из 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: [1x100 double]
YData: [1x100 double]
Use GET to show all properties
