主要内容

图表发展概况

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

从R2019b开始,可以通过定义的子类来创建图表的类实现海图容器基类。创建类使您能够:

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

  • 封装算法和原始图形对象 - 您可以实现执行计算和管理底层图形对象的方法。以这种方式组织代码允许您隐藏用户的实现详细信息。

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

图表类的结构

图表类的第一行指定了matlab.graphics.chartcontainer.ChartContainer类作为超类。例如,称为课程的第一行ConfidenceChart看起来像这样:

classdef信心图
              

除了指定超类之外,在类定义中还要包括以下组件。

组成部分 描述

公共财产块
(推荐)

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

私人物业大厦
(推荐)

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

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

  • 访问=私人

  • 转瞬即逝的

  • 不可复制

设置方法
(必选)

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

在受保护的块中定义此方法,以便只有您的类才能执行它。

更新方法
(必选)

此方法更新图表中的基础对象。它在下一个进程中执行drawnow在用户更改一个或多个属性值后执行。

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

隐式构造函数方法

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

C = ConfidenceChart(GCF,“扩展数据”(1 2 3),“YData”,[4 5 6])c=信心图(“扩展数据”(1 2 3),“YData”(4 5 6))

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

公共和私人地产大厦

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

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

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

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

除了要存储的任何计算值外,专用块中的特性还存储构成图表的基础图形对象。最终,您的类将使用公共属性中的数据来配置底层对象。包括转瞬即逝的不可复制属性,如果用户复制或保存图表实例,则避免存储冗余信息。

例如,这里是显示一个图表的属性块线对象和A.补丁对象。公共属性块存储用户可以控制的值x- 和Y线的坐标、置信距值、标记符号和颜色值。私人财产块储存线补丁对象。

特性XData = NaN YData = NaN confencmargin = 0.15 marksymbol ='o'Color = [1 0 0]结束特性(访问=私有,瞬态,不可凝固)LineObject PatchObject结束

设置方法

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

使用设置方法:

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

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

  • 配置基本图形对象。

  • 配置轴。

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

谨慎

调用绘图函数或修改轴的函数,而无需指定目标轴可能会产生意外结果。

当您调用绘图功能时设置方法,指定临时值(例如)对于坐标数据。此外,还指定对应于类的公共属性的其他参数的临时值。这样做避免在两个中设置相同的属性值设置更新方法。

如果要在轴中显示多个基本体对象,请调用持有绘图命令之间的功能。将保持状态设置为“关闭”在您最后一次绘图命令之后。

例如,考虑显示一行和修补程序的图表。它有这些属性:

  • 两个公共属性被称为扩展属性伊达塔用于存储的x- 和Y- 这条线路

  • 两个私有属性被称为lineobject.patchObject.

这个设置方法通过调用getAxes方法。然后它打电话给补丁函数并将输出存储在patchObject.财产。下一行代码设置了轴的保持状态“开”打电话之前情节函数创建lineobject.财产。最后一行代码将坐标轴保持状态设置为“关闭”.

功能设置(obj)%拿斧子ax=getAxes(obj);%创建补丁和行对象obj.patchobject = patch(ax,nan,nan,“r”,“FaceAlpha”,0.2,...“EdgeColor”,“没有”);(ax,“开”)obj.lineObject =绘图(AX,NaN,NaN);%关闭保持状态(ax,“关闭”)结束

更新方法

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

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

例如,考虑具有这些属性的图表:

  • 两个公共属性被称为扩展属性颜色

  • 两个私有属性被称为lineobject.patchObject.

这个更新方法的更新扩展属性颜色特性线补丁对象。

功能更新(obj)%更新线对象的扩展数据obj.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;结束

例如:置信界限图

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

实现

源于海图容器基类。

classdef信心图
                   

定义公共属性。

特性XData = NaN YData = NaN confencmargin = 0.15 marksymbol ='o'Color = [1 0 0]结束

定义私有属性。

特性(访问=私有,瞬态,不可凝固)LineObject PatchObject结束

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

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

方法(访问=受保护)功能设置(obj)%拿斧子ax=getAxes(obj);%创建补丁和行对象obj.patchobject = patch(ax,nan,nan,“r”,“FaceAlpha”,0.2,...“EdgeColor”,“没有”);(ax,“开”)obj.lineObject =绘图(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.confidencemmargin;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 = concidenceChart(“扩展数据”,X,“YData”,y,“信心保证金”,0.15);

改变颜色。

C.Color = [0 0 1];

提示

除了文档中提供的示例之外,您还可以找到各种社区撰写的示例文件交换Matlab Central™.

金宝app支持常用图形功能

默认情况下,图表的实例支持所有Matlab图表的大部分功能。金宝app例如,gcafindobj.函数可以返回图表的实例。您还可以将图表实例传递给设置得到函数,您可以在属性检查器中配置图表的属性。

只有在您的图表中启用此表中描述的功能时,才会支持它们。金宝app

特征 描述 更多信息
传说

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

matlab.graphics.chartcontainer.mixin.Legend
彩色栏

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

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

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

用极轴、地理轴或多轴绘制图表
功能

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

启用设置轴属性的方便功能
保存和加载

用户与图表交互后存储更改,以便它们可以保存图表并在将其加载到Matlab中时恢复其状态。

保存和加载图表类的实例

另见

班级

功能

性质

相关话题