启用设置坐标轴属性的便利函数
类的子类开发图表时ChartContainer
类,考虑启用一些MATLAB®在坐标轴上设置属性的方便函数。例如,您可以设计您的类来支持标题
函数。通过启用便利函数,您可以提供与MATLAB绘图函数一致的用户体验。
对不同类型属性的支持
启用便利函数的方式取决于该函数控制的是非计算属性还是计算属性。该表列出了您可以支持的便利函数。
为非计算属性启用函数
非计算属性是固定值。除非用户或您的代码显式更改它们,否则它们不会更改。
若要为非计算属性启用方便函数,请在类中定义一个公共属性,该属性存储想要控制的axes属性的值。然后定义一个公共方法,该方法具有与您希望支持的便利函数相同的名称并支持相同的调用语法。向设置属性值的方法中添加一行代码。例如,考虑一个类,它的公共属性称为TitleText
用于存储标题。下面的代码显示标题
方法。
函数标题(obj, txt) obj。TitleText =三种;结束
对象中添加一行代码更新
方法,调用MATLAB方便函数设置相应的轴属性。
标题(getAxes (obj) obj.TitleText);
在执行上述步骤并保存类文件之后,可以创建图表的实例并调用标题
函数显示标题。这样做会触发这个调用序列:
的
标题
方法上的TitleText
属性,该属性标记要更新的图表。下次
drawnow
执行,更新
方法执行并调用标题
函数在坐标轴上。的
标题
功能更新标题
坐标轴上的属性。
启用计算属性的函数
计算属性由坐标轴控制。这些轴根据轴的内容和底层数据重新计算它们的值。
若要为计算属性启用方便函数,请定义具有与要启用的方便函数相同名称和调用语法的方法。在该方法中,调用便利函数并将坐标轴指定为第一个参数。例如,启用xlim
函数,定义一个方法调用xlim
在你的类中。自xlim
函数接受数量可变的输入参数,则必须指定变长度输入宗量
作为第二个输入参数。的xlim
函数还支持数量不定的输出参数,因此必须指定[varargout {1: nargout}]
为了支持这些论点。
函数varargout = xlim(obj,varargin) ax = getAxes(obj);[varargout {1: nargout}] = xlim (ax,变长度输入宗量{:});结束
要提供对图表上相应属性值的访问,请在类上定义两个相关属性。第一个属性提供对便利函数控制的值的访问。另一个属性提供对mode属性的访问,该属性指示如何控制第一个属性。mode属性的值可以为“汽车”
或“手动”
.将这些属性定义为依赖的,以便图表不存储值。坐标轴控制和存储这些值。例如,提供对XLim
而且XLimMode
坐标轴上的属性,定义一对相关的属性称为XLimits
而且XLimitsMode
.
属性(依赖)XLimits双(1、2)XLimitsMode{mustBeMember (XLimitsMode{“自动”、“手动”})}结束
接下来,定义集
而且得到
方法用于每个依赖属性。在每个方法中,设置相应的axes属性。下面的代码显示集
方法和得到
方法XLimits
而且XLimitsMode
属性。
函数set.XLimits(obj,xlm) ax = getAxes(obj);斧子。XLim = xlm;结束函数xlm = get.XLimits(obj) ax = getAxes(obj);xlm = ax.XLim;结束函数set.XLimitsMode(obj,xlmmode) ax = getAxes(obj);斧子。XLimMode = xlmmode;结束函数xlm = get.XLimitsMode(obj) ax = getAxes(obj);xlm = ax.XLimMode;结束
在执行上述步骤并保存类文件之后,可以创建图表的实例并调用xlim
函数来更改x-轴在图表中的限制。的xlim
方法执行,该方法又调用xlim
函数来更新XLim
坐标轴上的属性。
请注意
默认情况下,当用户调用xlim
而且ylim
功能。若要提供在用户保存和加载图表时保存这些更改的支持,请参见保存和加载图表类的实例.
支持的图表类标题
,xlim
,ylim
功能
方法定义的图表类标题
,xlim
,ylim
功能。下面的代码演示了如何:
定义一个
TitleText
属性并实现标题
方法,以便图表的实例支持标题
函数。实现
xlim
而且ylim
方法,以便图表的实例支持xlim
而且ylim
功能。属性定义允许用户获取和设置x- - -y设在限制。
结合
酒吧
而且ErrorBar
对象合并到单个图表中。
要定义类,请将此代码复制到编辑器中并将其与名称一起保存BarErrorBarChart.m
在可写文件夹中。
classdefBarErrorBarChart < matlab.graphics.chartcontainer.ChartContainer属性XData(: 1)增加一倍=南YData(: 1)增加一倍=南EData(: 1)增加一倍=南TitleText(::) char=”结束属性(依赖)提供属性来支持设置和获取XLimits双(1、2)XLimitsMode{mustBeMember (XLimitsMode{“自动”、“手动”})}YLimits双(1、2)YLimitsMode{mustBeMember (YLimitsMode{“自动”、“手动”})}结束属性(Access = private) BarObject(1,1) matlab.graphics.chart.primitive.BarErrorBarObject(1,1) matlab.graphics.chart.primitive.ErrorBar结束方法(访问=保护)函数setup(obj) ax = getAxes(obj);obj。酒吧Object = bar(ax,NaN,NaN); hold(ax,“上”obj。ErrorBarObject = errorbar (ax,南南南);obj.ErrorBarObject.LineStyle =“没有”;obj.ErrorBarObject.LineWidth = 2;obj.ErrorBarObject.Color = [0.6 0.7 1];(ax,“关闭”);结束函数更新(obj)%更新栏和错误栏XData和YDataobj.BarObject.XData = obj.XData;obj.BarObject.YData = obj.YData;obj.ErrorBarObject.XData = obj.XData;obj.ErrorBarObject.YData = obj.YData;%更新ErrorBar增量值obj.ErrorBarObject.YNegativeDelta = obj.EData;obj.ErrorBarObject.YPositiveDelta = obj.EData;%更新轴标题ax = getAxes (obj);标题(ax, obj.TitleText);结束结束方法% xlim方法函数varargout = xlim(obj,varargin) ax = getAxes(obj);[varargout {1: nargout}] = xlim (ax,变长度输入宗量{:});结束% ylim方法函数varargout = ylim(obj,varargin) ax = getAxes(obj);[varargout {1: nargout}] = ylim (ax,变长度输入宗量{:});结束%标题的方法函数标题(obj, txt) obj。TitleText =三种;结束XLimits和XLimitsMode的% set和get方法函数set.XLimits(obj,xlm) ax = getAxes(obj);斧子。XLim = xlm;结束函数xlm = get.XLimits(obj) ax = getAxes(obj);xlm = ax.XLim;结束函数set.XLimitsMode(obj,xlmmode) ax = getAxes(obj);斧子。XLimMode = xlmmode;结束函数xlm = get.XLimitsMode(obj) ax = getAxes(obj);xlm = ax.XLimMode;结束YLimits和YLimitsMode的% set和get方法函数set.YLimits(obj,ylm) ax = getAxes(obj);斧子。YLim = ylm;结束函数ylm = get.YLimits(obj) ax = getAxes(obj);ylm = ax.YLim;结束函数set.YLimitsMode(obj,ylmmode) ax = getAxes(obj);斧子。YLimMode = ylmmode;结束函数ylm = get.YLimitsMode(obj) ax = getAxes(obj);ylm = ax.YLimMode;结束结束结束
在保存BarErrorBarChart.m
,创建图表的实例。
BarErrorBarChart (“XData”,[1 2 3 4],“YData”,[11 22 31 41],“EData”,[2 2 2 2]);
方法指定标题标题
函数。然后通过调用缩放到最后三个栏xlim
函数。
标题(“三大因素”) xlim (1.5 [5])