Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

getLayout

类: matlab.graphics.chartcontainer.ChartContainer
包: matlab.graphics.chartcontainer

获取图容器子类的分块图布局

语法

tcl = getLayout(obj)

说明

tcl = getLayout(obj) 返回从 matlab.graphics.chartcontainer.ChartContainer 基类继承的图对象的分块图布局。

输入参数

全部展开

matlab.graphics.chartcontainer.ChartContainer 基类继承的类的对象。

输出参数

全部展开

TiledChartLayout 对象。如果您正在开发的图包含极坐标图、地理图或以分块形式组合在一起的多个图,请使用 tcl。您可以配置布局的某些方面,例如图块的数量、每个坐标区对象的位置以及图块之间的间距。

属性

Protectedtrue

要了解方法的属性,请参阅方法属性

示例

全部展开

定义一个名为 CartPolarPlot 的类,该类在笛卡尔坐标和极坐标中绘制数据。

要定义该类,请创建包含以下类定义的名为 CartPolarPlot.m 的文件,该文件具有如下特性:

  • 三个公共属性:XDataYData,用于存储坐标数据;LineColor,用于控制线条的颜色

  • 四个私有属性,用于存储两个线条和坐标区对象

  • 一个 setup 方法,用于配置布局、创建坐标区和初始化两个 Line 对象

  • 一个 update 方法,当用户更改一个或多个公共属性的值时,该方法会更新 Line 对象

classdef CartPolarPlot < matlab.graphics.chartcontainer.ChartContainer
    properties
        XData (1,:) double = NaN
        YData (1,:) double = NaN
        LineColor (1,3) double {mustBeGreaterThanOrEqual(LineColor,0),...
            mustBeLessThanOrEqual(LineColor,1)} = [.5 0 1]
    end
    properties(Access = private,Transient,NonCopyable)
        CartesianLine (1,1) matlab.graphics.chart.primitive.Line
        PolarLine (1,1) matlab.graphics.chart.primitive.Line
        CartesianAx (1,1) matlab.graphics.axis.Axes
        PolarAx (1,1) matlab.graphics.axis.PolarAxes
    end
    
    methods(Access = protected)
        function setup(obj)
            % Get the layout and create the axes
            tcl = getLayout(obj);
            tcl.GridSize = [1 2];
            obj.CartesianAx = axes(tcl);
            obj.PolarAx = polaraxes(tcl);
            
            % Move the polar axes to the second tile
            obj.PolarAx.Layout.Tile = 2;
            
            % Create the Cartesian and polar lines
            obj.CartesianLine = plot(obj.CartesianAx,NaN,NaN);
            obj.PolarLine = polarplot(obj.PolarAx,NaN,NaN);
        end
        function update(obj)
            % Update Cartesian line
            obj.CartesianLine.XData = obj.XData;
            obj.CartesianLine.YData = obj.YData;
            obj.CartesianLine.Color = obj.LineColor;
            
            % Update polar line
            obj.PolarLine.Color = obj.LineColor;
            obj.PolarLine.ThetaData = obj.XData;
            obj.PolarLine.RData = obj.YData;
        end
    end
end

接下来,创建一组 x 和 y 坐标。然后通过带 'XData''YData' 名称-值对组参数调用 CartPolarPlot 构造函数方法来绘制坐标。

x = 0:0.01:2*pi;
y = sin(2*x).*cos(2*x);
CartPolarPlot('XData',x,'YData',y);

在 R2020a 中推出