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

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

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

Abstract
true
HandleCompatible
true

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

Свойства

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

Видимость легенды в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение '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