主要内容

图发展概述

图表功能,如情节散射,酒吧使您能够通过对颜色和线条样式等方面的基本控制快速可视化数据。要创建自定义图表,您可以组合多个图形对象、设置这些对象的属性或调用其他函数。在R2019a和早期版本中,存储定制代码并与其他人共享的常用方法是编写脚本或函数。

类的子类,从而为图表创建类实现ChartContainer基类。创建一个类可以使您:

  • 为用户提供方便的界面——当用户希望自定义图表的某个方面时,他们可以设置属性,而不必修改和重新运行图形代码。用户可以在命令行上修改属性,也可以在属性检查器中检查它们。

  • 封装算法和基本图形对象——实现执行计算和管理底层图形对象的方法。以这种方式组织代码可以对用户隐藏实现细节。

当定义从这个基类派生的图表时,图表的实例是图形对象层次结构的成员。因此,您的图表与图形系统的许多方面兼容。例如,gcafindobj函数可以返回图表的实例。

图表类的结构

图表类的第一行指定matlab.graphics.chartcontainer.ChartContainer类作为超类。例如,类的第一行称为ConfidenceChart是这样的:

classdefConfidenceChart < matlab.graphics.chartcontainer.ChartContainer

除了指定超类外,还应在类定义中包含以下组件。

组件 描述

公共财产块
(推荐)

该块定义了您希望用户访问的所有属性。这些属性一起构成了图表的用户界面。

私有财产块
(推荐)

该块存储底层图形对象和您不希望用户访问的其他实现细节。

在这个块中,设置这些属性值:

  • 访问=私人

  • 瞬态

  • NonCopyable

设置方法
(必需)

此方法设置图表的初始状态。它在MATLAB时执行一次®构造对象。

在受保护的块中定义此方法。

更新方法
(必需)

此方法更新图表中的底层对象。它在下一次执行期间执行drawnow在用户更改一个或多个属性值之后执行。

方法在相同的受保护块中定义此方法设置方法。

隐式构造函数方法

类的构造函数方法继承了类的构造函数,因此不必为类编写构造函数方法ChartContainer基类。构造函数接受可选的输入参数:一个父容器和任意数量的名称-值对参数,用于设置图表上的属性。例如,如果您定义一个名为ConfidenceChart它具有公共属性XDataYData,你可以使用以下命令创建类的实例:

c = ConfidenceChart (gcf“XData”(1 2 3),“YData”,[4 5 6]) c =自信表(“XData”(1 2 3),“YData”(4 5 6))

如果您希望提供一个接口,该接口以与典型函数相同的方式接受输入参数,那么可以定义一个自定义构造函数方法。看到为图表类编写构造函数为更多的信息。

公营及私人物业大厦

将你的类属性划分为至少两个块:

  • 用于存储面向用户界面组件的公共块

  • 用于存储要隐藏的实现细节的私有块

公共块中的属性存储用户提供的输入值。例如,显示一条线的图表可能存储x- - -y-坐标向量在两个公共属性中。由于属性名称-值对参数是隐式构造函数方法的可选输入,因此推荐的方法是将公共属性初始化为默认值。如果定义存储坐标值的公共属性,则将它们初始化为如果用户在没有任何输入的情况下调用构造函数,则值或空数组将构造空图表。

私有块中的属性存储构成图表的底层图形对象,以及希望存储的任何计算值。最终,您的类将使用公共属性中的数据来配置底层对象。通过包括瞬态NonCopyable属性,如果用户复制或保存图表的实例,则可以避免存储冗余信息。

例如,以下是用于显示对象和一个补丁对象。公共属性块存储用户可以控制的值x- - -y-该线的坐标、置信裕度值、标记符号和颜色值。私有属性块存储补丁对象。

属性XData = NaN YData = NaN ConfidenceMargin = 0.15 MarkerSymbol =“o”颜色= [1 0 0]结束属性(Access = private,Transient,NonCopyable) LineObject补丁对象结束

设置方法

设置方法在MATLAB构造图表对象时执行一次。任何作为名称-值对参数传递给构造函数方法的属性值都在该方法执行后赋值。

使用设置方法:

  • 调用绘图函数来创建要在图表中使用的基本图形对象。

  • 将绘图函数返回的基本对象作为图表对象上的私有属性存储。

  • 配置基本图形对象。

  • 配置轴。

许多图形函数都有一个可选的输入参数,用于指定目标轴对象。这些函数包括绘图函数(如情节散射,酒吧)和修改坐标轴的函数(例如持有网格,标题).当从类方法中调用这些类型的函数时,必须指定目标axis对象。方法可以访问axis对象getAxes方法。此方法返回axes对象,或者如果图表尚未包含axes对象,则创建笛卡尔轴对象。

谨慎

在不指定目标轴的情况下调用绘图函数或修改轴的函数可能会产生意想不到的结果。

中调用绘图函数时设置方法,指定临时值(例如),以获取坐标数据。另外,为与类的公共属性对应的其他参数指定临时值。这样做可以避免在两个设置更新方法。

如果希望在坐标轴中显示多个基本对象,请调用持有绘图命令之间的功能。将保持状态设置为“关闭”在你最后的密谋命令之后。

例如,考虑一个显示一条线和一个补丁的图表。它具有以下特性:

  • 两个公共属性XDataYData用于存储的x- - -y直线的-坐标

  • 两处私人房产LineObjectPatchObject

设置方法获取坐标轴对象getAxes方法。然后调用补丁函数并将输出存储在PatchObject财产。下一行代码将坐标轴的保持状态设置为“上”在调用之前情节函数来创建LineObject财产。最后一行代码将坐标轴保持状态设置为“关闭”

函数设置(obj)%得到坐标轴ax = getAxes (obj);创建Patch和Line对象obj。PatchObject =补丁(ax,南南“r”“FaceAlpha”, 0.2,...“EdgeColor”“没有”);(ax,“上”obj。行Object = plot(ax,NaN,NaN);关闭保持状态(ax,“关闭”结束

更新方法

当用户更改图表对象上的一个或多个属性值时,MATLAB会对图表对象进行标记以便更新。的更新方法之后第一次运行设置方法运行。然后它再次运行drawnow执行。的drawnow函数根据用户的MATLAB会话中的图形环境状态,定期自动执行。因此,在更改属性值和看到这些更改的结果之间可能存在延迟。

使用更新方法根据公共属性的新值重新配置图表中的底层图形对象。通常,此方法不区分哪些公共属性发生了更改。它重新配置依赖于公共属性的底层图形对象的所有方面。

例如,考虑一个具有以下属性的图表:

  • 两个公共属性XData颜色

  • 两处私人房产LineObjectPatchObject

更新方法的更新XData颜色的属性补丁对象。

函数更新(obj)更新行对象的XDataobj.LineObject.XData = obj.XData;%更新补丁XDatax = obj.XData;obj.PatchObject.XData = [x x(end:-1:1)];更新行对象颜色obj.LineObject.Color = obj.Color;obj.PatchObject.FaceColor = obj.Color;结束

示例:置信界限图

这个例子展示了如何创建一个图表来绘制具有置信边界的直线。创建一个类定义文件ConfidenceChart.m在MATLAB路径下的文件夹中。按照以下步骤定义类。

一步 实现

源自ChartContainer基类。

classdefConfidenceChart < matlab.graphics.chartcontainer.ChartContainer

定义公共属性。

属性XData = NaN YData = NaN ConfidenceMargin = 0.15 MarkerSymbol =“o”颜色= [1 0 0]结束

定义私有财产。

属性(Access = private,Transient,NonCopyable) LineObject补丁对象结束

实现设置方法。在本例中,调用情节补丁函数来创建补丁对象分别。将这些对象存储在相应的私有属性中。

将坐标轴的保持状态转回“关闭”在退出方法之前。

方法(访问=保护)函数设置(obj)%得到坐标轴ax = getAxes (obj);创建Patch和Line对象obj。PatchObject =补丁(ax,南南“r”“FaceAlpha”, 0.2,...“EdgeColor”“没有”);(ax,“上”obj。行Object = plot(ax,NaN,NaN);关闭保持状态(ax,“关闭”结束

实现更新方法。在这种情况下,更新x- - -y-坐标、颜色和基础对象的标记符号。

函数更新(obj)更新Line的XData和YDataobj.LineObject.XData = obj.XData;obj.LineObject.YData = obj.YData;更新补丁XData和YDatax = obj.XData;obj.PatchObject.XData = [x x(end:-1:1)];y = obj.YData;c = obj.ConfidenceMargin;obj.PatchObject.YData = [y+c y(end:-1:1)-c];%更新颜色obj.LineObject.Color = obj.Color;obj.PatchObject.FaceColor = obj.Color;%更新标记obj.LineObject.Marker = obj.MarkerSymbol;结束结束结束

接下来,通过调用带有一些公共属性的隐式构造函数方法来创建图表的实例:

x = 0:0.2:10;y = besselj (0, x);c = ConfidenceChart (“XData”, x,“YData”, y,“ConfidenceMargin”, 0.15);

改变颜色。

c.Color = [0 0 1];

提示

除了文档中提供的示例之外,您还可以在上面找到社区编写的各种示例世界杯预选赛小组名单文件交换MATLAB中央™

支持通用图形功能

默认情况下,图表实例支持所有MATLAB图表的许多通用功能。例如,gcafindobj函数可以返回图表的实例。也可以将图表的实例传递给得到函数,您可以在属性检查器中配置图表的属性。

只有在为图表启用这些特性时,才支持该表中描述的特性。

功能 描述 更多的信息
传说

启用传说函数和图工具栏中的图例工具。

matlab.graphics.chartcontainer.mixin.Legend
Colorbar

启用colorbar函数和图工具栏中的颜色栏工具。

matlab.graphics.chartcontainer.mixin.Colorbar
不同类型的轴,或多个轴

显示一个或多个笛卡尔、极坐标或地理图。

用极轴、地理轴或多个轴开发图表
功能

启用在坐标轴上设置属性的函数,例如标题xlim,ylim功能。

启用设置坐标轴属性的便利函数
保存和加载

存储用户与图表交互后的更改,以便他们可以保存图表并在将其加载回MATLAB时恢复其状态。

保存和加载图表类的实例

另请参阅

功能

属性

相关的话题

Baidu
map