主要内容

andrewsplot

安德鲁斯图

    说明

    andrewsplot(X) 创建矩阵 X 中多元数据的安德鲁斯图。该图显示 X 中每个观测值的连续曲线。有关详细信息,请参阅安德鲁斯图

    andrewsplot(X,Name=Value) 使用一个或多个名称-值参量指定其他选项。例如,您可以在绘图前标准化 X 中的数据,并使用分组变量对数据进行分组。

    示例

    andrewsplot(ax,___) 在目标坐标区 ax 上显示绘图。将坐标区指定为上述任一语法中的第一个输入参量。

    p = andrewsplot(___) 使用上述语法中的任何输入参量组合返回 Line 对象数组。创建绘图后,使用 p 修改该绘图的属性。有关属性列表,请参阅 Line 属性

    示例

    示例

    全部折叠

    创建安德鲁斯图来可视化分组的样本数据。

    加载 fisheriris 数据集,该数据集包含三个鸢尾花品种的四个测量值(萼片长度、萼片宽度、花瓣长度和花瓣宽度)。

    load fisheriris

    矩阵 meas 包含 150 朵花的所有四个测量值。元胞数组 species 包含 150 朵花中每朵花的品种名称。

    创建一个安德鲁斯图,按 species 对样本数据分组。

    andrewsplot(meas,Group=species)

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 150 objects of type line. These objects represent setosa, versicolor, virginica.

    图将每个观测值(花朵)显示为区间 [0,1] 内的平滑函数。每条曲线的颜色对应不同花卉品种。

    创建另一个简化的安德鲁斯图,仅显示每组的中位数和四分位数。

    andrewsplot(meas,Group=species,Quantile=0.25)

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 9 objects of type line. These objects represent setosa, versicolor, virginica.

    图将每组的中位数值显示为实曲线,将其他四分位数的值显示为相同颜色的虚曲线。

    使用安德鲁斯图可视化多维数据。首先,将数据分组。然后,使用标准化和四分位数来查看各组之间的差异。

    加载 patients 数据集,其中包含 100 位患者的医疗信息。指定描述性的类别名称 SmokerNonsmoker,而不是 10。然后,使用 DiastolicSystolicWeightAgeSmoker 变量创建一个表。

    load patients
    Smoker = categorical(Smoker,logical([1 0]), ...
        ["Smoker","Nonsmoker"]);
    patientData = table(Diastolic,Systolic,Weight,Age,Smoker);

    基于 patientData 中的变量创建一个安德鲁斯图。使用最后一个变量按是否为吸烟者对数据进行分组。

    andrewsplot(patientData{:,1:end-1},Group=patientData.Smoker)

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 100 objects of type line. These objects represent Smoker, Nonsmoker.

    默认情况下,图使用未标准化数据。图显示 Smoker 组和 Nonsmoker 组之间没有巨大差异。

    在绘图前标准化数值 patientData 变量。

    andrewsplot(patientData{:,1:end-1},Group=Smoker,Standardize="on")

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 100 objects of type line. These objects represent Smoker, Nonsmoker.

    生成的安德鲁斯图显示 SmokerNonsmoker 组之间的更多差异。该图略显拥挤,因为它显示 100 条曲线,每条曲线对应于 patientData 中的一位患者。

    它并不针对每个观测值显示一条曲线,而是针对每个组显示四分位数曲线。这些四分位数包括第 25 个百分位数、中位数和第 75 个百分位数。

    andrewsplot(patientData{:,1:end-1},Group=patientData.Smoker, ...
        Standardize="on",Quantile=0.25)

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 6 objects of type line. These objects represent Smoker, Nonsmoker.

    四分位数曲线显示 Smoker 组和 Nonsmoker 组之间的差异。例如,在大约 0.25 处,这两个组具有不重叠的四分位数值。

    前面提到,安德鲁斯图中显示的每个函数均为变量的线性组合,其系数随时间而变化。(请参阅安德鲁斯图。)计算在时间 0.25 处变量的系数。变量的这种线性组合可以帮助您区分各组。

    t = 0.25;
    variables = patientData.Properties.VariableNames(1:end-1)
    variables = 1×4 cell
        {'Diastolic'}    {'Systolic'}    {'Weight'}    {'Age'}
    
    
    coefficients = [1/sqrt(2) sin(2*pi*t) cos(2*pi*t) sin(4*pi*t)]
    coefficients = 1×4
    
        0.7071    1.0000    0.0000    0.0000
    
    

    在时间 0.25 处,DiastolicSystolic 变量具有相似幅值的正系数,WeightAge 变量具有值为 0 的系数。前面的图显示,在数据标准化后,Smoker 组的四分位数曲线在时间 0.25 处具有正值,Nonsmoker 组的四分位数曲线在时间 0.25 处具有负值。

    图和变量系数表明 Smoker 组中的患者往往具有更高的 DiastolicSystolic 值,从而提供了一种在 patientData 中区分 Smoker 组和 Nonsmoker 组的方法。

    调整安德鲁斯图的外观。您可以在对 andrewsplot 的调用中设置一些绘图属性。还可以在创建绘图之前或之后指定绘图的外观。

    加载 fisheriris 数据集,该数据集包含三个鸢尾花品种的四个测量值(萼片长度、萼片宽度、花瓣长度和花瓣宽度)。

    load fisheriris

    矩阵 meas 包含 150 朵花的所有四个测量值。元胞数组 species 包含 150 朵花中每朵花的品种名称。

    使用 meas 中的测量数据和 species 中的组数据创建一个安德鲁斯图。通过在绘制前设置色序,为分组数据指定非默认颜色方案 (copper)。

    colororder(copper(3))
    andrewsplot(meas,Group=species)

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 150 objects of type line. These objects represent setosa, versicolor, virginica.

    仅绘制 species 中每组的中位数、第 25 个百分位数和第 75 个百分位数的曲线。要使绘图线条变粗,请将线宽指定为 2。当您在对 andrewsplot 的调用中指定 LineWidth 值时,该函数会将图中每条曲线的线宽设置为相同的值。

    andrewsplot(meas,Group=species,Quantile=0.25,LineWidth=2)

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 9 objects of type line. These objects represent setosa, versicolor, virginica.

    重新创建之前的绘图,但仅增大表示 setosa 组中鸢尾花测量值中位数的曲线的线宽。首先,创建一个由 Line 对象组成的数组 p,其中每个对象对应于绘图中的一条曲线。然后,使用圆点表示法修改数组中第一个 Line 对象的 LineWidth 属性。

    p = andrewsplot(meas,Group=species,Quantile=0.25)
    p = 
      9×1 Line array:
    
      Line    (median)
      Line    (lower quantile)
      Line    (upper quantile)
      Line    (median)
      Line    (lower quantile)
      Line    (upper quantile)
      Line    (median)
      Line    (lower quantile)
      Line    (upper quantile)
    
    
    p(1).LineWidth = 2;

    Figure contains an axes object. The axes object with xlabel t, ylabel f(t) contains 9 objects of type line. These objects represent setosa, versicolor, virginica.

    输入参数

    全部折叠

    多元数据,指定为数值矩阵。X 的行对应于观测值,而列对应于变量。

    andrewsplotX 中的 NaN 值视为缺失值,并忽略对应的行。

    示例: rand(100,10)

    数据类型: single | double

    绘图的坐标区,指定为 Axes 对象。如果未指定 ax,则 andrewsplot 使用当前坐标区创建绘图。有关创建 Axes 对象的详细信息,请参阅 axes

    名称-值参数

    全部折叠

    将可选参量对组指定为 Name1=Value1,...,NameN=ValueN,其中 Name 是参量名称,Value 是对应的值。名称-值参量必须出现在其他参量之后,但对各个参量对组的顺序没有要求。

    示例: andrewsplot(meas,Group=species,Quantile=0.25) 指定为 species 中的每个组绘制中位数、第 25 个百分位数和第 75 个百分位数曲线。

    用于分组数据的变量,指定为数值向量、逻辑向量、字符矩阵、字符串数组、字符向量元胞数组或分类向量。为 X 中的每个观测值指定一个组值。

    andrewsplot 函数使用颜色来区分各组。也就是说,同一组中的观测值具有相同颜色的曲线。默认情况下,andrewsplot 最多分配七种唯一的组颜色。当组的总数超出颜色数时,该函数会循环使用这些颜色。有关如何为特定数量的组调整安德鲁斯图中颜色的示例,请参阅调整图的外观

    示例: Group=["good","bad","bad","good","good","bad","bad","bad"]

    数据类型: single | double | logical | char | string | cell | categorical

    要绘制的数据的分位数,指定为范围 (0,1) 内的数值标量。当您将 Quantile 指定为值 α 时,andrewsplot 函数仅绘制 f(t)t 的每个值处的中位数、α1 – α 分位数。

    X 包含许多观测值时,分位数图选项提供一个有用的数据摘要。

    示例: Quantile=0.25

    数据类型: single | double

    标准化数据的方法,指定为下表中的值之一。

    描述
    "off"使用未标准化的 X 数据。
    "on"在绘制之前,缩放 X 的每列,使均值等于 0,标准差等于 1。
    "pca"根据 X 的主成分分数创建一个图,按特征值降序排列。
    "pcastd"使用标准化主成分分数创建一个图。

    有关主成分分析的详细信息,请参阅 pca

    示例: Standardize="pca"

    数据类型: char | string

    输出参量

    全部折叠

    用于绘图修改的对象,以 Line 对象数组形式返回。

    • 如果不指定分位数值 (Quantile),则对于 X 的每行,p 都包含一个对应的对象。

    • 如果指定分位数值,则对于分组变量 (Group) 中的每个组,p 包含三个对应的对象。

    详细信息

    全部折叠

    提示

    • 通过为 Line 属性 中列出的任何属性指定属性名称和值,可以修改绘图曲线的某些方面。但是,这种方法将修改应用于绘图中的所有曲线。要仅修改特定绘图曲线,请使用返回 Line 对象的语法,并使用圆点表示法来单独调整每个对象属性。有关示例,请参阅调整图的外观

    版本历史记录

    在 R2006a 之前推出