主要内容

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

的子类来开发图表ChartContainer基类,getAxes方法提供了一种支持单个笛卡尔轴对象的方法。金宝app如果要支持极轴、地理轴或多轴,金宝app则必须将轴创建并配置为TiledChartLayout对象,该对象存储在图表对象中。

创建一个单极轴或地理轴对象

要在图表中包含单个极轴或地理轴对象,请执行以下操作:

  1. 定义一个私有属性来存储坐标轴。

  2. 设置方法:

    • 调用getLayout方法获取TiledChartLayout对象。

    • 调用polaraxesgeoaxes函数创建坐标轴,并指定TiledChartLayout对象作为父对象。

例如,这里有一个包含极轴对象的基本类。

classdefSimplePolar < matlab.graphics.chartcontainer.ChartContainer属性(Access = private,Transient,NonCopyablematlab.graphics.axis.PolarAxes结束方法(访问=保护)函数设置(obj)获得布局并创建轴tcl = getLayout (obj);obj。PolarAx = polaraxes (tcl);%其他设置代码%……结束函数更新(obj)%更新图表%……结束结束结束

创建多个轴对象的平铺

显示多个轴的平铺:

  1. 定义用于存储坐标轴对象的私有属性。您还可以定义一个属性来存储轴对象数组。

  2. 设置方法:

    • 调用getLayout方法获取TiledChartLayout对象。

    • 设置GridSize财产的TiledChartLayout对象,以便每个轴至少有一个平铺。

    • 调用polaraxes,或geoaxes函数创建坐标轴对象,并指定TiledChartLayout对象作为父对象。

    • 通过设置将每个轴移动到所需的贴图布局属性。默认情况下,坐标轴出现在第一个贴图中。

例如,这里有一个包含两个笛卡尔轴的基本类:

classdefTwoAxesChart < matlab.graphics.chartcontainer.ChartContainer属性(Access = private,Transient,NonCopyablematlab.graphics.axis.AxesAx2matlab.graphics.axis.Axes结束方法(访问=保护)函数设置(obj)获取布局并设置网格大小tcl = getLayout (obj);tcl。GridSize = [2 1];创建坐标轴obj。ax₁=轴(tcl);obj。Ax2= axes(tcl);%移动第二个轴到第二个贴图obj.Ax2.Layout。瓦= 2;结束函数更新(obj)%更新图表%……结束结束结束

例如:包含地理和笛卡儿坐标轴的图表

这个例子展示了如何定义一个图表类,使用两个轴来可视化地理和分类数据。左边的坐标轴包含一个地图,显示了几个蜂窝基站的位置。右边的坐标轴显示了塔的分类分布。

以下TowerChart类定义展示了如何:

  • 定义一个公共属性称为TowerData存储一个表。

  • 使用调用的局部函数验证表的内容mustHaveRequiredVariables

  • 定义两个被调用的私有属性MapAxesHistogramAxes用来存储坐标轴。

  • 实现一个设置方法获取TiledChartLayout对象,指定布局的网格大小,并定位坐标轴。

要定义类,请将此代码复制到编辑器中,并使用名称保存它TowerChart.m在一个可写文件夹中。

classdefTowerChart < matlab.graphics.chartcontainer.ChartContainer属性TowerData(::)表{mustHaveRequiredVariables}=表([]...[] [],“VariableNames”, {“STRUCTYPE”“纬度”“经”})结束属性(Access = private,Transient,NonCopyable) MapAxesmatlab.graphics.axis.GeographicAxesHistogramAxesmatlab.graphics.axis.AxesScatterObjectmatlab.graphics.chart.primitive.ScatterHistogramObjectmatlab.graphics.chart.primitive.categorical.Histogram结束方法(访问=保护)函数设置(obj)%配置布局和创建轴tcl = getLayout (obj);tcl。GridSize = [1 2];obj。MapAxes = geoaxes (tcl);obj。HistogramAxes =轴(tcl);将直方图轴移动到第二个贴图obj.HistogramAxes.Layout.Tile = 2;%创建散点和直方图对象obj。ScatterObject = geoscatter (obj。MapAxes,南南“。”);obj。HistogramObject =直方图(obj.HistogramAxes categorical.empty,...“定位”“水平”);给坐标轴添加标题标题(obj。MapAxes,“塔位置”)标题(obj。HistogramAxes,“塔类型”)包含(obj。HistogramAxes,“塔”结束函数更新(obj)%更新分散对象obj.ScatterObject.LatitudeData = obj.TowerData.Latitude;obj.ScatterObject.LongitudeData = obj.TowerData.Longitude;从STRUCTYPE表变量中获取塔的类型towertypes = obj.TowerData.STRUCTYPE;%在更新柱状图之前检查空塔类型如果~isempty(towertypes) obj.HistogramObject.Data = towertypes;obj.HistogramObject.Categories =类别(towertypes);其他的obj.HistogramObject.Data = categorical.empty;结束结束结束结束函数mustHaveRequiredVariables(台)如果表中没有必需的变量,则返回错误断言(所有(ismember ({“STRUCTYPE”“纬度”“经”},...tbl.Properties.VariableNames)),...MATLAB: TowerChart: InvalidTable...表必须有STRUCTYPE, Latitude和Longitude变量。);结束

保存类文件后,加载存储在其中的表cellularTowers.mat.然后通过将表传递给TowerChart构造函数方法作为名称-值对参数。

负载cellularTowers.matTowerChart (“TowerData”, cellularTowers);

另请参阅

功能

属性

相关的话题