matlab.graphics.chartcontainer.mixin.Legend class

Пакет: matlab.graphics.chartcontainer.mixin

Добавьте поддержку легенды в подкласс контейнера диаграммы

Описание

matlab.graphics.chartcontainer.mixin.Legend является классом для добавления поддержки легенды к графикам, которые наследуют от matlab.graphics.chartcontainer.ChartContainer. Унаследовав от этого класса, можно отобразить легенду на графике. Пользователи могут выбрать опции в панели меню рисунка или на панели инструментов рисунка, чтобы показать или скрыть эту легенду.

Используйте этот синтаксис, чтобы включить поддержку легенды для вашего графика:

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

The matlab.graphics.chartcontainer.mixin.Legend класс является handle класс.

Атрибуты класса

Abstract
true
HandleCompatible
true

Для получения информации об атрибутах класса см. раздел «Атрибуты класса».

Свойства

расширить все

Видимость легенды, заданная как 'on' или 'off', или как числовое или логическое 1 (true) или 0 (false). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом, можно использовать значение этого свойства как логическое значение. Значение сохранено в виде логического значения on/off типа matlab.lang.OnOffSwitchState.

Когда для этого свойства задано значение 'on'легенда видна на графике.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

Методы

расширить все

Примеры

свернуть все

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

Чтобы определить класс, создайте файл с именем SmoothLegendPlot.m который содержит следующий код. The setup метод для этого класса выполняет следующие задачи:

  • Создает два Line объекты с соответствующей DisplayName значения для отображения в легенде

  • Делает легенду видимой путем установки 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

Затем создайте пару x и y векторы. График x и y вызовом SmoothLegendPlot метод конструктора, который наследуется от ChartContainer класс. Задайте '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