exponenta event banner

matlab.graphics.chartcontainer.mixin.Класс легенды

Пакет: 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

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

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

Abstract
true
HandleCompatible
true

Сведения об атрибутах класса см. в разделе Атрибуты класса.

Свойства

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

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

Если для этого свойства установлено значение 'on', легенда видна на диаграмме.

Атрибуты:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

Методы

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

Примеры

свернуть все

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

Чтобы определить класс, создайте файл с именем SmoothLegendPlot.m который содержит следующий код. 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