setup
类: matlab.graphics.chartcontainer.ChartContainer
命名空间: matlab.graphics.chartcontainer
语法
setup(obj)
说明
setup(
设置图的初始状态。它在创建图对象时执行一次。执行 obj
)setup
方法后,将对作为名称-值对组参量传递给图的构造函数方法的任何属性进行赋值。
定义此方法以便为类的每个新实例执行初始化代码。例如,您可以使用此方法创建底层图形对象,并设置这些对象的初始属性值。
输入参数
obj
— 类的对象
图对象
从 matlab.graphics.chartcontainer.ChartContainer
基类继承的类的对象。
示例
对线图进行平滑处理
定义名为 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];
提示
避免在图类的 setup
和 update
方法中调用 drawnow
。在 setup
和 update
方法中调用 drawnow
会导致图内不必要的更新,从而导致视觉闪烁和对图外对象的不必要更新,这会对性能产生负面影响。
版本历史记录
在 R2019b 中推出R2020a: ChartContainer
子类在 setup
方法运行后进行属性赋值
当您创建 ChartContainer
子类的实例并将属性名称-值对组参量传递给构造函数时,属性赋值将在 setup
方法运行后进行。在 R2019b 中,属性赋值在 setup
方法运行之前进行。
如果您的类的 setup
方法引用对象上某个属性的值,您可以通过以下任一方式更新代码:
在定义属性时为其赋予默认值。
将引用该属性的代码移至
update
方法。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)