exponenta event banner

обновление

Класс: matlab.graphics.chartcontainer.ChartContainer
Пакет: matlab.graphics.chartcontainer

Обновить экземпляр подкласса контейнера диаграммы после установки свойств

Синтаксис

update(obj)

Описание

update(obj) обновляет содержимое диаграммы после изменения одного или нескольких значений общедоступных свойств. Определите этот метод для обновления базовых графических объектов на диаграмме с использованием новых значений свойств. Этот метод выполняется во время следующего drawnow после изменения пользователем одного или нескольких значений свойств на диаграмме.

Входные аргументы

развернуть все

Объект класса, наследующий от matlab.graphics.chartcontainer.ChartContainer базовый класс.

Признаки

Abstracttrue
Protectedtrue

Сведения об атрибутах методов см. в разделе Атрибуты метода.

Примеры

развернуть все

Определение класса с именем SmoothPlot который отображает набор данных с использованием синей пунктирной линии со сглаженной версией линии.

Чтобы определить класс, создайте файл с именем SmoothPlot.m содержит следующее определение класса с этими функциями:

  • XData и YData общие свойства, в которых хранятся данные координат x и y для исходной линии.

  • SmoothColor и SmoothWidth общие свойства, определяющие цвет и ширину гладкой линии.

  • OriginalLine и SmoothLine частные свойства, которые хранят Line объекты для исходных и сглаженных данных.

  • A setup метод, инициализирующий OriginalLine и SmoothLine.

  • Один update метод, который обновляет график при изменении пользователем значения свойства.

  • A createSmoothData метод, который вычисляет сглаженную версию YData.

classdef SmoothPlot < matlab.graphics.chartcontainer.ChartContainer
    properties
        XData (1,:) double = NaN
        YData (1,:) double = NaN
        SmoothColor (1,3) double {mustBeGreaterThanOrEqual(SmoothColor,0),...
            mustBeLessThanOrEqual(SmoothColor,1)} = [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)
            % Create 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);
            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 sm = createSmoothData(obj)
            % Calculate smoothed data
            v = ones(1,10)*0.1;
            sm = conv(obj.YData,v,'same');
        end
    end
end

Далее создайте пару x и y векторы. График x и y путем вызова SmoothPlot метод конструктора, который обеспечивается ChartContainer класс. Укажите 'XData' и 'YData' аргументы пары имя-значение и возвращают объект как c.

x = 1:1:100;
y = 10*sin(x./5) + 8*sin(10.*x + 0.5);
c = SmoothPlot('XData',x,'YData',y);

Использовать c для изменения цвета гладкой линии на красный.

c.SmoothColor = [1 0 0];

Представлен в R2019b