update
类: matlab.graphics.chartcontainer.ChartContainer
命名空间: matlab.graphics.chartcontainer
设置属性后更新图容器子类的实例
语法
update(obj)
说明
update(
在一个或多个属性值发生更改后更新图的内容。使用新属性值定义此方法以更新图中的底层图形对象。此方法在下一次 obj
)drawnow
执行期间用户更改图的一个或多个属性值之后执行。
输入参数
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 中推出
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)