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

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

Свойства

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

Видимость легенды, заданная как 'off' или 'on'. Когда это свойство установлено в '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,obj.XData,obj.YData,'LineStyle',':',...
                'DisplayName','Original');
            hold(ax,'on')
            obj.SmoothLine = plot(ax,NaN,NaN,'LineStyle','-',...
                'Color',obj.SmoothColor,...
                'LineWidth',obj.SmoothWidth,...
                '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

Для просмотра документации необходимо авторизоваться на сайте