update

Класс: 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