update

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

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

Синтаксис

update(obj)

Описание

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

  • Во время следующего drawnow выполнение, после того, как пользователь изменяет одни или несколько значений свойств на графике.

  • Когда аспект графических изменений среды пользователя (таких как размер фигуры).

Входные параметры

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

Объект класса, который наследовался matlab.graphics.chartcontainer.ChartContainer базовый класс.

Примеры

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

Задайте SmoothPlot класс, который строит набор данных с помощью пунктирного и отметил точкой синюю линию сглаживавшей версией линии.

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

  • Четыре публичных свойств: XData, YData, SmoothColor, и SmoothWidth

  • Два частных свойств: OriginalLine и SmoothLine

  • setup метод, который инициализирует OriginalLine и SmoothLine

  • update метод, который выполняет эти задачи:

    • Обновляет XData и YData свойства OriginalLine со значениями, сохраненными в XData и YData свойства на объекте диаграммы

    • Обновляет XData свойство SmoothLine со значением, сохраненным в XData свойство на объекте диаграммы

    • Вычисляет значение YData свойство SmoothLine путем вызова createSmoothData метод.

    • Обновляет Color и LineWidth свойства SmoothLine со значениями, сохраненными в SmoothColor и SmoothWidth свойства на объекте диаграммы

  • 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)
            % Get the axes
            ax = getAxes(obj);
            
            % Create the original and smooth lines
            obj.OriginalLine = plot(ax,obj.XData,obj.YData,'LineStyle',':');
            hold(ax,'on')
            obj.SmoothLine = plot(ax,NaN,NaN,'LineStyle','-',...
                'Color',obj.SmoothColor,'LineWidth',obj.SmoothWidth);
            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