Main Content

update

クラス: matlab.graphics.chartcontainer.ChartContainer
名前空間: matlab.graphics.chartcontainer

プロパティの設定後にチャート コンテナー サブクラスのインスタンスを更新

構文

update(obj)

説明

update(obj) は、1 つ以上のプロパティ値が変更された後にチャートの内容を更新します。このメソッドを定義して、チャート内の基となるグラフィックス オブジェクトを新しいプロパティ値を使って更新します。このメソッドは、次回の drawnow の実行中、ユーザーがチャート上の 1 つ以上のプロパティ値を変更した後に実行されます。

入力引数

すべて展開する

matlab.graphics.chartcontainer.ChartContainer 基底クラスから継承するクラスのオブジェクト。

属性

Abstracttrue
Protectedtrue

メソッドの属性の詳細については、メソッドの属性を参照してください。

すべて展開する

青色の点線を平滑化バージョンのラインとともに使用して一連のデータをプロットする、SmoothPlot というクラスを定義します。

このクラスを定義するには、次の機能をもつ以下のクラス定義を含む SmoothPlot.m というファイルを作成します。

  • 元のラインの x 座標データと y 座標データを保存する XDataYData というパブリック プロパティ。

  • 滑らかなラインの色と幅を制御する SmoothColorSmoothWidth というパブリック プロパティ。

  • 元のデータと平滑化データの Line オブジェクトを保存する OriginalLineSmoothLine というプライベート プロパティ。

  • OriginalLine および SmoothLine を初期化する setup メソッド。

  • ユーザーがプロパティの値を変更したときにプロットを更新する update メソッド。

  • 平滑化バージョンの YData を計算する createSmoothData メソッド。

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

次に、xy のベクトルのペアを作成します。ChartContainer クラスによって提供される SmoothPlot コンストラクター メソッドを呼び出すことにより、xy をプロットします。'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];

ヒント

チャート クラスの setup および update の各メソッド内で drawnow を呼び出すことは避けてください。setup および update の各メソッド内で drawnow を呼び出すと、チャート内で不要な更新が行われ、結果として表示が点滅したり、チャート外部のオブジェクトが不要に更新されたりすることになり、パフォーマンスに悪影響を与えます。

バージョン履歴

R2019b で導入