Main Content

matlab.graphics.chartcontainer.mixin.Legend クラス

名前空間: matlab.graphics.chartcontainer.mixin

チャート コンテナー サブクラスに凡例サポートを追加

R2019b 以降

説明

matlab.graphics.chartcontainer.mixin.Legend は、matlab.graphics.chartcontainer.ChartContainer から継承するチャートに凡例サポートを追加するためのクラスです。このクラスからの継承により、チャートに凡例を表示できるようになります。ユーザーは、Figure のメニュー バーまたは Figure のツール バーのオプションによって、その凡例の表示または非表示を選択できます。

チャートの凡例サポートを有効にするには、次の構文を使用します。

classdef MyChart < matlab.graphics.chartcontainer.ChartContainer & ...
                   matlab.graphics.chartcontainer.mixin.Legend
  ...
end

matlab.graphics.chartcontainer.mixin.Legend クラスは handle クラスです。

クラスの属性

抽象型
true
HandleCompatible
true

クラス属性の詳細については、クラスの属性を参照してください。

プロパティ

すべて展開する

凡例の可視性。'on' または 'off' もしくは数値または logical 1 (true) または 0 (false) として指定します。'on' の値は true と等価であり、'off'false と等価です。したがって、このプロパティの値を logical 値として使用できます。値は matlab.lang.OnOffSwitchState 型の on/off logical 値として格納されます。

このプロパティが 'on' に設定されている場合、凡例はチャートに表示されます。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

メソッド

すべて展開する

すべて折りたたむ

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

このクラスを定義するには、以下のコードを含む SmoothLegendPlot.m という名前のファイルを作成します。このクラスの setup メソッドは以下のタスクを実行します。

  • 凡例に表示する適切な DisplayName 値を含む 2 つの Line オブジェクトを作成

  • LegendVisible プロパティを 'on' に設定することにより、凡例を表示

  • Legend オブジェクトを取得し、テキストの色、ボックス エッジの色、ボックスのライン幅をカスタマイズ

classdef SmoothLegendPlot < matlab.graphics.chartcontainer.ChartContainer & ...
        matlab.graphics.chartcontainer.mixin.Legend
    
    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)
            ax = getAxes(obj);
            
            % Create line objects. Define line styles and legend names.
            obj.OriginalLine = plot(ax,NaN,NaN,'LineStyle',':',...
                'DisplayName','Original');
            hold(ax,'on')
            obj.SmoothLine = plot(ax,NaN,NaN,...
                'DisplayName','Smooth');
            
            % Make legend visible
            obj.LegendVisible = 'on';
            
            % Get legend and set text color, edge color, and line width
            lgd = getLegend(obj);
            lgd.TextColor = [.3 .3 .3];
            lgd.EdgeColor = [.8 .8 .8];
            lgd.LineWidth = .7;
            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);
            
            % Adjust smooth line appearance
            obj.SmoothLine.LineWidth = obj.SmoothWidth;
            obj.SmoothLine.Color = obj.SmoothColor;
        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 クラスから継承される SmoothLegendPlot コンストラクター メソッドを呼び出すことにより、xy をプロットします。'XData''YData' の名前と値のペアの引数を指定して、チャート オブジェクトを c として返します。

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

c を使用して、滑らかなラインの色を赤に変更します。凡例にも新しいラインの色が表示されることを確認してください。

c.SmoothColor = [1 0 0];

バージョン履歴

R2019b で導入