Main Content

matlab.graphics.chartcontainer.ChartContainer 类

命名空间: matlab.graphics.chartcontainer

用于开发图对象的基类

自 R2019b 起

描述

matlab.graphics.chartcontainer.ChartContainer 是用于定义您自己的图对象类的类。定义此基类的子类时,可以使用 ChartContainer 属性和方法来构建图对象。在您的类定义文件的第一行指定以下语法以直接从 ChartContainer 类继承,其中 MyChart 是您的对象的名称:

classdef MyChart < matlab.graphics.chartcontainer.ChartContainer

matlab.graphics.chartcontainer.ChartContainer 类是一个 handle 类。

类属性

Abstract
true
HandleCompatible
true

有关类属性的信息,请参阅类属性

属性

全部展开

图的大小和位置,不包括轴标签和刻度线等装饰元素的边距。以 [left bottom width height] 形式的向量指定此属性。值采用 Units 属性指定的单位。

  • left - 父容器的左边缘与不包含边距的图的内部左边缘之间的距离。通常,父容器是图窗、面板或选项卡。

  • bottom - 父容器的底边缘与不包含边距的图的内底边缘之间的距离。

  • width - 图的宽度,不包括边距。

  • height - 图的高度,不包括边距。

注意

当图的父级是 TiledChartLayout 时,设置此属性不起作用。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

图的大小和位置,包括轴标签和刻度线等装饰元素的边距。以 [left bottom width height] 形式的向量指定此属性。值采用 Units 属性指定的单位。

  • left - 父容器的左边缘与包含边距的图的外部左边缘之间的距离。通常,父容器是图窗、面板或选项卡。

  • bottom - 父容器的底边缘与包含边距的图的外底边缘之间的距离。

  • width - 图的宽度,包括边距。

  • height - 图的高度,包括边距。

注意

当图的父级是 TiledChartLayout 时,设置此属性不起作用。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

图的大小和位置,不包括轴标签和刻度线等装饰元素的边距。以 [left bottom width height] 形式的向量指定此属性。此属性等同于 InnerPosition 属性。

注意

当图的父级是 TiledChartLayout 时,设置此属性不起作用。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

在增加、删除或更改装饰元素时保持不变的位置属性,指定为下列值之一:

  • 'outerposition' - 在添加、删除或更改装饰元素(例如标题或轴标签)时,OuterPosition 属性保持不变。如需任何位置调整,MATLAB® 会调整 InnerPosition 属性。

  • 'innerposition' - 在添加、删除或更改装饰元素(例如标题或轴标签)时,InnerPosition 属性保持不变。如需任何位置调整,MATLAB 会调整 OuterPosition 属性。

注意

当父容器为 TiledChartLayout 对象时,设置此属性不起作用。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

位置单位,指定为下表中的值之一。要以特定单位更改图的位置,请在指定 Position 属性之前设置 Units 属性。如果您在单个命令中指定 UnitsPosition 属性(使用名称-值对组),请务必在 Position 之前指定 Units

Units描述
'normalized'(默认值)根据父容器进行归一化,父容器通常是图窗、面板或选项卡。容器的左下角对应到 (0,0),右上角对应到 (1,1)
'inches'英寸。
'centimeters'厘米。
'characters'

基于图形根对象的默认字体:

  • 字符宽度 = 字母 x 的宽度。

  • 字符高度 = 两个文本行的基线之间的距离。

'points'字体磅数。一磅等于 1/72 英寸。
'pixels'

以像素为单位的距离不依赖 Windows®Macintosh 系统上的系统分辨率:

  • 在 Windows 系统上,一个像素是 1/96 英寸。

  • Macintosh 系统上,一个像素是 1/72 英寸。

在 Linux® 系统上,一个像素的大小由系统分辨率确定。

属性:

GetAccess
public
SetAccess
public
Dependent
true
NonCopyable
true

布局选项,指定为 TiledChartLayoutOptions 对象。此属性指定当图的实例是分块图布局的子级时的选项。如果此实例不是分块图布局的子级(例如,它是图窗或面板的子级),则此属性为空且不起作用。否则,您可以通过设置 TiledChartLayoutOptions 对象的 TileTileSpan 属性,在布局内定位图。

例如,以下代码将图对象 c 放入分块图布局的第三个图块中。

c.Layout.Tile = 3;

要使图占据多个图块,请将 TileSpan 属性指定为二元素向量。例如,此图占据了 2 行和 3 列的图块。

c.Layout.TileSpan = [2 3];

注意

getAxes 方法返回的坐标区不支持分块图布局。在这种情况下,您可以将图的实例放入分块图布局中。

属性:

GetAccess
public
SetAccess
public

可见性状态,指定为 'on''off',或者指定为数值或逻辑值 1 (true) 或 0 (false)。值 'on' 等效于 true'off' 等效于 false。因此,您可以使用此属性的值作为逻辑值。该值存储为 matlab.lang.OnOffSwitchState 类型的 on/off 逻辑值。

  • 'on' - 显示图。

  • 'off' - 隐藏图而不将其删除。当图不可见时,您仍可以访问其属性。

属性:

GetAccess
public
SetAccess
public
Dependent
true
GetObservable
true
SetObservable
true

图的父容器,指定为 FigurePanelTabTiledChartLayout 对象。

属性:

GetAccess
public
SetAccess
public
Transient
true
Dependent
true
GetObservable
true
SetObservable
true
NonCopyable
true

图对象句柄在其父级的子级列表中的可见性,指定为下列值之一:

  • 'on' - 图对象句柄始终可见。

  • 'off' - 图对象句柄始终不可见。该选项用于防止另一函数无意中对图进行更改。要在执行该函数时暂时隐藏句柄,可将 HandleVisibility 设置为 'off'

  • 'callback' - 图对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行窗口访问对象,但允许回调函数访问对象。

如果图的父对象的 Children 属性中未列出该对象,则通过搜索对象层次结构或查询句柄属性获取对象句柄的函数无法返回该对象。这包括 getfindobjgcagcfgconewplotclaclfclose

隐藏的对象句柄仍有效。将根 ShowHiddenHandles 属性设置为 'on' 可以列出所有对象句柄,而不管它们的 HandleVisibility 属性设置是什么。

属性:

GetAccess
public
SetAccess
public
Dependent
true
GetObservable
true
SetObservable
true

方法

全部展开

示例

全部折叠

定义名为 SmoothPlot 的类,该类使用一条蓝色点线和该线条经过平滑处理的版本绘制一组数据。

要定义该类,请创建包含以下类定义的名为 SmoothPlot.m 的文件,该文件具有如下特性:

  • XDataYData 公共属性,用于存储原始线条的 xy 坐标数据。

  • SmoothColorSmoothWidth 公共属性,用于控制平滑线条的颜色和宽度。

  • OriginalLineSmoothLine 私有属性,用于存储原始数据和平滑数据的 Line 对象。

  • 一个 setup 方法,用于初始化 OriginalLineSmoothLine

  • 一个 update 方法,当用户更改属性值时,该方法会更新绘图。

  • 一个 createSmoothData 方法,用于计算 YData 的经过平滑处理的版本。

classdef SmoothPlot < matlab.graphics.chartcontainer.ChartContainer
    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)
            % Create the axes
            ax = getAxes(obj);
            
            % Create the original and smooth lines
            obj.OriginalLine = plot(ax,NaN,NaN,'LineStyle',':');
            hold(ax,'on')
            obj.SmoothLine = plot(ax,NaN,NaN);
            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);
            
            % Update line color and width
            obj.SmoothLine.Color = obj.SmoothColor;
            obj.SmoothLine.LineWidth = obj.SmoothWidth;
        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 类提供的 SmoothPlot 构造函数方法来绘制 xy。指定 'XData''YData' 名称-值对组参量,并以 c 形式返回对象。

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

使用 c 将平滑线的颜色更改为红色。

c.SmoothColor = [1 0 0];

详细信息

全部展开

版本历史记录

在 R2019b 中推出

全部展开