图发展概述
图表功能,如情节
,散射
,酒吧
使您能够通过对颜色和线条样式等方面的基本控制快速可视化数据。要创建自定义图表,您可以组合多个图形对象、设置这些对象的属性或调用其他函数。在R2019a和早期版本中,存储定制代码并与其他人共享的常用方法是编写脚本或函数。
类的子类,从而为图表创建类实现ChartContainer
基类。创建一个类可以使您:
为用户提供方便的界面——当用户希望自定义图表的某个方面时,他们可以设置属性,而不必修改和重新运行图形代码。用户可以在命令行上修改属性,也可以在属性检查器中检查它们。
封装算法和基本图形对象——实现执行计算和管理底层图形对象的方法。以这种方式组织代码可以对用户隐藏实现细节。
当定义从这个基类派生的图表时,图表的实例是图形对象层次结构的成员。因此,您的图表与图形系统的许多方面兼容。例如,gca
和findobj
函数可以返回图表的实例。
图表类的结构
图表类的第一行指定matlab.graphics.chartcontainer.ChartContainer
类作为超类。例如,类的第一行称为ConfidenceChart
是这样的:
classdefConfidenceChart < matlab.graphics.chartcontainer.ChartContainer
除了指定超类外,还应在类定义中包含以下组件。
隐式构造函数方法
类的构造函数方法继承了类的构造函数,因此不必为类编写构造函数方法ChartContainer
基类。构造函数接受可选的输入参数:一个父容器和任意数量的名称-值对参数,用于设置图表上的属性。例如,如果您定义一个名为ConfidenceChart
它具有公共属性XData
和YData
,你可以使用以下命令创建类的实例:
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对象,则创建笛卡尔轴对象。
谨慎
在不指定目标轴的情况下调用绘图函数或修改轴的函数可能会产生意想不到的结果。
中调用绘图函数时设置
方法,指定临时值(例如南
),以获取坐标数据。另外,为与类的公共属性对应的其他参数指定临时值。这样做可以避免在两个设置
和更新
方法。
如果希望在坐标轴中显示多个基本对象,请调用持有
绘图命令之间的功能。将保持状态设置为“关闭”
在你最后的密谋命令之后。
例如,考虑一个显示一条线和一个补丁的图表。它具有以下特性:
两个公共属性
XData
和YData
用于存储的x- - -y直线的-坐标两处私人房产
LineObject
和PatchObject
的设置
方法获取坐标轴对象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
和颜色
两处私人房产
LineObject
和PatchObject
的更新
方法的更新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路径下的文件夹中。按照以下步骤定义类。
一步 | 实现 |
---|---|
源自 |
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,“关闭”)结束 |
实现 |
函数更新(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图表的许多通用功能。例如,gca
和findobj
函数可以返回图表的实例。也可以将图表的实例传递给集
和得到
函数,您可以在属性检查器中配置图表的属性。
只有在为图表启用这些特性时,才支持该表中描述的特性。
功能 | 描述 | 更多的信息 |
---|---|---|
传说 | 启用 |
matlab.graphics.chartcontainer.mixin.Legend |
Colorbar | 启用 |
matlab.graphics.chartcontainer.mixin.Colorbar |
不同类型的轴,或多个轴 | 显示一个或多个笛卡尔、极坐标或地理图。 |
用极轴、地理轴或多个轴开发图表 |
功能 | 启用在坐标轴上设置属性的函数,例如 |
启用设置坐标轴属性的便利函数 |
保存和加载 | 存储用户与图表交互后的更改,以便他们可以保存图表并在将其加载回MATLAB时恢复其状态。 |
保存和加载图表类的实例 |