matlab.graphics.chartcontainer.ChartContainer 类
命名空间: matlab.graphics.chartcontainer
用于开发图对象的基类
描述
matlab.graphics.chartcontainer.ChartContainer 是用于定义您自己的图对象类的类。定义此基类的子类时,可以使用 ChartContainer 属性和方法来构建图对象。在您的类定义文件的第一行指定以下语法以直接从 ChartContainer 类继承,其中 MyChart 是您的对象的名称:
classdef MyChart < matlab.graphics.chartcontainer.ChartContainer
matlab.graphics.chartcontainer.ChartContainer 类是一个 handle 类。
属性
图的大小和位置,不包括轴标签和刻度线等装饰元素的边距。以 [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 属性。如果您在单个命令中指定 Units 和 Position 属性(使用名称-值对组),请务必在 Position 之前指定 Units。
Units | 描述 |
|---|---|
'normalized'(默认值) | 根据父容器进行归一化,父容器通常是图窗、面板或选项卡。容器的左下角对应到 (0,0),右上角对应到 (1,1)。 |
'inches' | 英寸。 |
'centimeters' | 厘米。 |
'characters' | 基于图形根对象的默认字体:
|
'points' | 字体磅数。一磅等于 1/72 英寸。 |
'pixels' | 像素。 在 Windows® 和 Macintosh 系统上,像素的大小为 1/96 英寸。此大小与系统分辨率无关。 在 Linux® 系统上,一个像素的大小由系统分辨率确定。 |
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
NonCopyable | true |
布局选项,指定为 TiledChartLayoutOptions 对象。此属性指定当图的实例是分块图布局的子级时的选项。如果此实例不是分块图布局的子级(例如,它是图窗或面板的子级),则此属性为空且不起作用。否则,您可以通过设置 TiledChartLayoutOptions 对象的 Tile 和 TileSpan 属性,在布局内定位图。
例如,以下代码将图对象 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 |
图的父容器,指定为 Figure、Panel、Tab 或 TiledChartLayout 对象。
属性:
GetAccess | public |
SetAccess | public |
Transient | true |
Dependent | true |
GetObservable | true |
SetObservable | true |
NonCopyable | true |
图对象句柄在其父级的子级列表中的可见性,指定为下列值之一:
'on'- 图对象句柄始终可见。'off'- 图对象句柄始终不可见。该选项用于防止另一函数无意中对图进行更改。要在执行该函数时暂时隐藏句柄,可将HandleVisibility设置为'off'。'callback'- 图对象句柄在回调或回调所调用的函数中可见,但在从命令行调用的函数中不可见。此选项阻止通过命令行窗口访问对象,但允许回调函数访问对象。
如果图的父对象的 Children 属性中未列出该对象,则通过搜索对象层次结构或查询句柄属性获取对象句柄的函数无法返回该对象。这包括 get、findobj、gca、gcf、gco、newplot、cla、clf 和 close。
隐藏的对象句柄仍有效。将根 ShowHiddenHandles 属性设置为 'on' 可以列出所有对象句柄,而不管它们的 HandleVisibility 属性设置是什么。
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
GetObservable | true |
SetObservable | true |
方法
示例
定义名为 SmoothPlot 的类,该类使用一条蓝色点线和该线条经过平滑处理的版本绘制一组数据。
要定义该类,请创建包含以下类定义的名为 SmoothPlot.m 的文件,该文件具有如下特性:
XData和YData公共属性,用于存储原始线条的 x 和 y 坐标数据。SmoothColor和SmoothWidth公共属性,用于控制平滑线条的颜色和宽度。OriginalLine和SmoothLine私有属性,用于存储原始数据和平滑数据的Line对象。一个
setup方法,用于初始化OriginalLine和SmoothLine。一个
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
接下来,创建一对 x 和 y 向量。调用 ChartContainer 类提供的 SmoothPlot 构造函数方法来绘制 x 和 y。指定 '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];

限制
ChartContainer 类的所有子类自动包含静态方法 loadobj 的内置实现,该方法无法重载。同样,如果您的类派生自 matlab.mixin.CustomElementSerialization,它会自动包含静态方法 finalizeIncomingObject 的内置实现,该方法无法重载。即使您尝试重载这些方法,MATLAB 也会使用这些方法的内置实现。
详细信息
定义类时,您可以包含一个 events 模块以使图能够侦听事件。
如果使用 HasCallbackProperty 属性定义 events 模块,则 MATLAB 会为模块中的每个事件在图上创建一个公共属性。您的用户可以使用属性来定义事件触发时执行的回调函数。每个属性的名称均为对应事件的名称在末尾追加字母 Fcn。例如,当用户点击图时执行回调函数的图可能会定义名为 Clicked 的事件。如果指定了 HasCallbackProperty 属性,MATLAB 会自动在图对象上创建名为 ClickedFcn 的对应公共属性。
例如,以下是名为 MyChart 的图类的 events 模块:
events (HasCallbackProperty, NotifyAccess = protected)
Clicked
end
myfunction 函数。 c = MyChart('ClickedFcn',@myfunction)版本历史记录
在 R2019b 中推出当您创建 ChartContainer 子类的实例并将属性名称-值对组参量传递给构造函数时,属性赋值将在 setup 方法运行后进行。在 R2019b 中,属性赋值在 setup 方法运行之前进行。
如果您的类的 setup 方法引用对象上某个属性的值,您可以通过以下任一方式更新代码:
在定义属性时为其赋予默认值。
将引用该属性的代码移至
update方法。
从 R2020a 开始,不推荐设置或获取 ActivePositionProperty。请改用 PositionConstraint 属性。
当前没有删除 ActivePositionProperty 的计划,但当您对图对象调用 set、get 或 properties 函数时,该属性不再列出。
要更新代码,请进行以下更改:
将
ActivePositionProperty的所有实例替换为PositionConstraint。将所有对
"position"选项的引用替换为"innerposition"选项。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)