parallelplot

语法
说明
parallelplot(___,
使用一个或多个名称-值对组参数指定其他选项。例如,您可以为具有数值的坐标指定数据归一化方法。有关属性列表,请参阅 ParallelCoordinatesPlot 属性。Name,Value
)
parallelplot(
在 parent
,___)parent
指定的图窗、面板或选项卡中创建平行坐标图。
返回 p
= parallelplot(___)ParallelCoordinatesPlot
对象。创建对象后,使用 p
修改该对象。有关属性列表,请参阅 ParallelCoordinatesPlot 属性。
示例
用表格数据创建平行坐标图
根据医疗患者数据表创建一个平行坐标图。
加载 patients
数据集,并基于加载到工作区中的变量子集创建一个表。使用表创建一个平行坐标图。绘图中的每个线条对应于单个患者。使用绘图观测数据中的趋势。例如,绘图表明吸烟者往往具有较高的血压值(包括舒张压和收缩压)。
load patients
tbl = table(Diastolic,Smoker,Systolic);
p = parallelplot(tbl)
p = ParallelCoordinatesPlot with properties: SourceTable: [100x3 table] CoordinateVariables: {'Diastolic' 'Smoker' 'Systolic'} GroupVariable: '' Show all properties
默认情况下,软件会沿坐标标尺随机抖动绘图线条,使其不会完全重叠。这种抖动对于可视化分类数据特别有用,因为它使您能够更轻松地区分绘图线条。例如,沿 Smoker
坐标标尺观察绘图线条;这些绘图线条并没有完全对齐到 true
或 false
刻度线。
要禁用默认抖动,请将 Jitter
属性设置为 0
。
p.Jitter = 0;
指定坐标变量和组变量
根据海啸数据表创建一个平行坐标图。指定要显示的表变量及其顺序,并根据其中一个变量对绘图中的线条进行分组。
将海啸数据以表形式读入工作区中。
tsunamis = readtable('tsunamis.xlsx');
使用该表中的变量子集创建一个平行坐标图。首先,增大图窗窗口大小,以防止绘图过度拥挤。然后,要指定变量及其顺序,请使用 'CoordinateVariables'
名称-值对组参数。要根据有效性对海啸事件进行分组,请将 'GroupVariable'
名称-值对组参数设置为 'Validity'
。绘图中的每个线条对应于单个海啸事件。绘图表明数据集中大多数具有 Validity
值的事件被认为是确定的海啸。
figure('Units','normalized','Position',[0.3 0.3 0.45 0.4]) coordvars = {'Year','Validity','Cause','Country'}; p = parallelplot(tsunamis,'CoordinateVariables',coordvars,'GroupVariable','Validity');
使用分 bin 数据创建平行坐标图
根据包含医疗患者数据的矩阵创建一个平行坐标图。对矩阵中一个列的值进行分 bin,并使用分 bin 值对绘图中的线条进行分组。
加载 patients
数据集,并根据 Age
、Height
和 Weight
值创建一个矩阵。使用矩阵数据创建一个平行坐标图。为绘图中的坐标变量添加标签。绘图中的每个线条对应于单个患者。
load patients
X = [Age Height Weight];
p = parallelplot(X)
p = ParallelCoordinatesPlot with properties: Data: [100x3 double] CoordinateData: [1 2 3] GroupData: [] Show all properties
p.CoordinateTickLabels = {'Age (years)','Height (inches)','Weight (pounds)'};
创建一个新分类变量,该分类变量将每个患者归入三个类别之一:short
、average
或 tall
。设置 bin 边界,使其包括最小和最大 Height
值。
min(Height)
ans = 60
max(Height)
ans = 72
binEdges = [60 64 68 72]; bins = {'short','average','tall'}; groupHeight = discretize(Height,binEdges,'categorical',bins);
现在使用 groupHeight
值对平行坐标图中的线条分组。绘图表明 short
患者体重往往低于 tall
患者。
p.GroupData = groupHeight;
指定坐标和组数据
根据包含医疗患者数据的矩阵创建平行坐标图。对于每个绘图,指定要显示的矩阵列,并根据一个单独变量对绘图中的线条进行分组。
加载 patients
数据集,并基于加载到工作区的变量中的一部分创建一个矩阵。
load patients
X = [Age Height Weight];
使用矩阵 X
中的列的子集创建一个平行坐标图。要指定列及其顺序,请使用 'CoordinateData'
名称-值对组参数。通过将 Smoker
值传递给 'GroupData'
名称-值对组参数,根据患者是否为吸烟者对其进行分组。绘图中的每个线条对应于单个患者。绘图表明是否为吸烟者与年龄或体重之间没有明显的关系。
coorddata = [1 3]; p = parallelplot(X,'CoordinateData',coorddata,'GroupData',Smoker)
p = ParallelCoordinatesPlot with properties: Data: [100x3 double] CoordinateData: [1 3] GroupData: [100x1 logical] Show all properties
p.CoordinateTickLabels = {'Age','Weight'};
使用 X
中列的另一个子集创建另一个平行坐标图。根据患者的性别对其进行分组。绘图表明男人的身高和体重高于女人。
coorddata2 = [2 3]; p2 = parallelplot(X,'CoordinateData',coorddata2,'GroupData',Gender)
p2 = ParallelCoordinatesPlot with properties: Data: [100x3 double] CoordinateData: [2 3] GroupData: {100x1 cell} Show all properties
p2.CoordinateTickLabels = {'Height','Weight'};
在绘图中更改数据归一化
根据停电数据表创建一个平行坐标图。更改数值坐标变量的归一化方法。
将停电数据以表形式读入工作区中。显示表的前几行。
outages = readtable('outages.csv');
head(outages)
Region OutageTime Loss Customers RestorationTime Cause _____________ ________________ ______ __________ ________________ ___________________ {'SouthWest'} 2002-02-01 12:18 458.98 1.8202e+06 2002-02-07 16:50 {'winter storm' } {'SouthEast'} 2003-01-23 00:49 530.14 2.1204e+05 NaT {'winter storm' } {'SouthEast'} 2003-02-07 21:15 289.4 1.4294e+05 2003-02-17 08:14 {'winter storm' } {'West' } 2004-04-06 05:44 434.81 3.4037e+05 2004-04-06 06:10 {'equipment fault'} {'MidWest' } 2002-03-16 06:18 186.44 2.1275e+05 2002-03-18 23:23 {'severe storm' } {'West' } 2003-06-18 02:49 0 0 2003-06-18 10:54 {'attack' } {'West' } 2004-06-20 14:39 231.29 NaN 2004-06-20 19:16 {'equipment fault'} {'West' } 2002-06-06 19:28 311.86 NaN 2002-06-07 00:51 {'equipment fault'}
创建一个名为 OutageDuration
的新变量,指示每次停电持续的时间。将 OutageDuration
转换为每次停电持续的天数。将该新变量添加到 outages
表中,并将其命名为 OutageDays
。
OutageDuration = outages.RestorationTime - outages.OutageTime; outages.OutageDays = days(OutageDuration);
使用 Loss
、Customers
和 OutageDays
变量创建一个平行坐标图。由于坐标变量是数值,因此使用 'DataNormalization'
和 'Jitter'
名称-值对组参数将绘图中的值显示为 Z 分数,不使用任何抖动。
coordvars = {'Loss','Customers','OutageDays'}; p = parallelplot(outages,'CoordinateVariables',coordvars,'DataNormalization','zscore','Jitter',0);
OutageDays
变量包含一个偏离 OutageDays
均值超过 30 倍标准差的值和另一个偏离均值超过 10 倍标准差的值。将鼠标悬停在绘图中的值上以显示数据提示。每个数据提示表示与绘图中的线条对应的表行。
在 outages
表中查找具有刚才识别的 OutageDays
极值的行。您会注意到,这两次停电的 RestorationTime
值是不正常的。
outliers = outages([1011 269],:)
outliers=2×7 table
Region OutageTime Loss Customers RestorationTime Cause OutageDays
_____________ ________________ ______ __________ ________________ ____________________ __________
{'NorthEast'} 2009-08-20 02:46 NaN 1.7355e+05 2042-09-18 23:31 {'severe storm' } 12083
{'MidWest' } 2008-02-07 06:18 2378.7 0 2019-08-14 16:16 {'energy emergency'} 4206.4
对绘图中坐标变量的类别重新排序
创建一个平行坐标图。对其中一个坐标变量的类别重新排序。
将停电数据以表形式读入工作区中。
outages = readtable('outages.csv');
使用表中的列的子集创建一个平行坐标图。根据导致停电的事件对绘图中的线条分组。
coordvars = [1 3 4 6]; p = parallelplot(outages,'CoordinateVariables',coordvars,'GroupVariable','Cause');
通过更新源表,更改 Cause
中事件的顺序。首先,将 Cause
转换为一个 categorical
变量,指定事件的新顺序,并使用 reordercats
函数创建一个名为 orderCause
的新变量。然后,在绘图的源表中,用新 orderCause
变量替换原来的 Cause
变量。
categoricalCause = categorical(p.SourceTable.Cause); newOrder = {'attack','earthquake','energy emergency','equipment fault', ... 'fire','severe storm','thunder storm','wind','winter storm','unknown'}; orderCause = reordercats(categoricalCause,newOrder); p.SourceTable.Cause = orderCause;
由于 Cause
变量包含七个以上的类别,因此绘图中的一些组具有相同的颜色。通过更改 p
的 Color
属性,为每个组分配不同颜色。
p.Color = parula(10);
输入参数
tbl
— 源表
表
源表,指定为表。
您可以使用 table
函数根据工作区变量创建表,也可以使用 readtable
函数以表的形式导入数据。
源表存储在 ParallelCoordinatesPlot
对象的 SourceTable
属性中。
coordvars
— 要显示为坐标的表变量
数值向量 | 字符串数组 | 字符向量元胞数组 | 逻辑向量
要显示为坐标的表变量,指定为下列形式之一:
数值向量 - 指示表变量的索引。例如,
parallelplot(tbl,'CoordinateVariables',[1 5:7])
选择表中的第一个、第五个、第六个和第七个变量来显示为坐标。字符串数组或字符向量元胞数组 - 指示表变量的名称。例如,
parallelplot(tbl,'CoordinateVariables',{'Age','Weight','Height'})
选择名为'Age'
、'Weight'
和'Height'
的变量来显示为坐标。逻辑向量 - 包含所选表变量的
true
元素。
coordvars
值存储在 ParallelCoordinatesPlot
对象的 CoordinateVariables
属性中。CoordinateTickLabels
属性存储选定的变量名称。
grpvar
— 用于对数据分组的表变量
字符向量 | 字符串标量 | 数值标量 | 逻辑向量
用于对数据分组的表变量,指定为下列形式之一:
字符向量或字符串标量 - 指示表变量名称之一。
数值标量 - 指示表变量索引
逻辑向量 - 包含表变量的一个
true
元素
与表变量关联的值必须构成一个数值向量、逻辑向量、分类数组、字符串数组或字符向量元胞数组。
grpvar
将 tbl
中的行分成若干唯一组。默认情况下,软件根据关联的绘图线条的组值为这些绘图线条着色。对应于同一组的绘图线条具有相同的颜色。然而,parallelplot
最多分配七种唯一的组颜色。当组的总数超过指定的颜色数量时,parallelplot
将循环使用指定的颜色。
在图例中,parallelplot
按照组在 ParallelCoordinatesPlot
的 GroupData
属性中首次出现的顺序显示其组名称。
示例: 'Smoker'
示例: 3
data
— 输入数据
数值矩阵
输入数据,指定为数值矩阵。
data
值存储在 ParallelCoordinatesPlot
对象的 Data
属性中。
coorddata
— 要显示为坐标的矩阵列
数值向量 | 逻辑向量
要显示为坐标的矩阵列,以下列形式之一指定:
数值向量 - 指示输入数据矩阵的列。例如,
parallelplot(data,'CoordinateData',[1 5:7])
选择data
中的第一个、第五个、第六个和第七个列来显示为坐标。逻辑向量 - 包含输入数据矩阵中选定列的
true
元素。
coorddata
值存储在 ParallelCoordinatesPlot
对象的 CoordinateData
属性中。
grpdata
— 用于对矩阵数据分组的值
数值向量 | 逻辑向量 | 分类数组 | 字符串数组 | 字符向量元胞数组
用于对矩阵数据分组的值,指定为数值向量、逻辑向量、分类数组、字符串数组或字符向量元胞数组。
grpdata
将 data
中的行分成若干唯一组。默认情况下,软件根据关联的绘图线条的组值为这些绘图线条着色。对应于同一组的绘图线条具有相同的颜色。然而,parallelplot
最多分配七种唯一的组颜色。当组的总数超过指定的颜色数量时,parallelplot
将循环使用指定的颜色。
在图例中,parallelplot
按照组在 ParallelCoordinatesPlot
的 GroupData
属性中首次出现的顺序显示其组名称。
示例: [1 2 1 3 2 1 3 3 2 3]
示例: categorical({'blue','red','yellow','blue','yellow','red','red','yellow','blue','red'})
parent
— 父容器
Figure
对象 | Panel
对象 | Tab
对象 | TiledChartLayout
对象 | GridLayout
对象
父容器,指定为 Figure
、Panel
、Tab
、TiledChartLayout
或 GridLayout
对象。
名称-值参数
将可选的参数对组指定为 Name1=Value1,...,NameN=ValueN
,其中 Name
是参数名称,Value
是对应的值。名称-值参数必须出现在其他参数之后,但参数对组的顺序无关紧要。
在 R2021a 之前,使用逗号分隔每个名称和值,并用引号将 Name
引起来。
示例: parallelplot(data,'GroupData',grpdata,'DataNormalization','zscore','Jitter',0)
指定使用 grpdata
对 data
中的数值数据进行分组,并将数据显示为 Z 分数,且不使用任何抖动。
Title
— 绘图标题
''
(默认) | 字符向量 | 字符串数组 | 字符向量元胞数组 | 分类数组
绘图标题,指定为字符向量、字符串数组、字符向量元胞数组或分类数组。默认情况下,绘图没有标题。
要创建一个多行标题,请指定字符串数组或字符向量元胞数组。数组中的每个元素对应一行文本。
如果将标题指定为分类数组,MATLAB® 将使用数组中的值,而不是类别。
示例: p = parallelplot(__,'Title','My Title Text')
示例: p.Title = 'My Title Text'
示例: p.Title = {'My','Title'}
DataNormalization
— 坐标的归一化方法
'range'
(默认) | 'none'
| 'zscore'
| 'scale'
| 'center'
| 'norm'
具有数值的坐标的归一化方法,指定为以下选项之一。
方法 | 描述 |
---|---|
'range' | 沿具有独立最小值和最大值的坐标标尺显示原始数据 |
'none' | 沿具有相同最小值和最大值的坐标标尺显示原始数据 |
'zscore' | 沿每个坐标标尺显示 Z 分数(均值为 0,标准差为 1) |
'scale' | 沿每个坐标标尺显示按标准差缩放的值 |
'center' | 沿每个坐标标尺显示均值为 0 的中心化数据 |
'norm' | 沿每个坐标标尺显示 2-范数值 |
有关这些方法的详细信息,请参阅 normalize
。
对于作为逻辑向量、日期时间数组、持续时间数组、分类数组、字符串数组或字符向量元胞数组的坐标变量,parallelplot
沿坐标标尺均匀分布唯一的可能值,而不考虑归一化方法。
示例: p = parallelplot(__,'DataNormalization','none')
示例: p.DataNormalization = 'zscore'
Jitter
— 数据位移距离
0.1
(默认) | 区间 [0,1] 中的数值标量
沿坐标标尺的数据位移距离,指定为区间 [0,1] 中的数值标量。Jitter
值决定绘图线条从实际值出发沿坐标标尺位移的最大距离,其中位移是均匀随机量。如果您将 Jitter
属性设置为 1
,则相邻抖动区域会恰好彼此接触。将 Jitter
属性设置为 0
可显示实际数据值。
一定程度的抖动对可视化分类数据特别有帮助,因为抖动使您能够更轻松地区分绘图线条。但是,Jitter
值会影响所有坐标变量,包括数值变量。
示例: p = parallelplot(__,'Jitter',0.5)
示例: p.Jitter = 0.2
Color
— 组颜色
字符向量 | 字符串数组 | 字符向量元胞数组 | RGB 值的矩阵
组颜色,指定为下列形式之一:
指定颜色名称、短名称或十六进制颜色代码的字符向量。十六进制颜色代码以井号 (
#
) 开头,后跟三个或六个0
到F
范围内的十六进制数字。这些值不区分大小写。因此,颜色代码'#FF8800'
与'#ff8800'
、'#F80'
与'#f80'
是等效的。指定一个或多个颜色名称、短名称或十六进制颜色代码的字符串数组或字符向量元胞数组。
范围 [0,1] 内的 RGB 值的三列矩阵。三列代表 R 值、G 值和 B 值。
从这些预定义的颜色、其等效 RGB 三元组及其十六进制颜色代码中进行选择。
颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" |
以下是 MATLAB 在许多类型的绘图中使用的默认颜色的 RGB 三元组和十六进制颜色代码。
RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
默认情况下,parallelplot
最多分配七种唯一的组颜色。当组的总数超过指定的颜色数量时,parallelplot
将循环使用指定的颜色。
示例: p = parallelplot(__,'Color',{'blue','black','green'})
示例: p.Color = [0 0 1; 0 0.5 0.5; 0.5 0.5 0.5]
示例: p.Color = {'#EDB120','#77AC30','#7E2F8E'}
输出参数
p
— 平行坐标图
ParallelCoordinatesPlot
对象
ParallelCoordinatesPlot
对象,它是一个独立可视化。创建对象后,使用 p
修改该对象。有关属性列表,请参阅 ParallelCoordinatesPlot 属性。
详细信息
独立可视化
独立可视化是出于特殊目的设计的图,其工作方式独立于其他图。与 plot
和 surf
等其他图不同,独立可视化内置一个预配置的坐标区对象,并且某些自定义不可用。独立可视化还具有以下特性:
它无法与其他图形元素(如线条、补片或曲面)组合。因此,不支持
hold
命令。gca
函数可以将图对象返回为当前坐标区。您可以将图对象传递给许多 MATLAB 函数,这些函数接受坐标区对象作为输入参数。例如,您可以将图对象传递给
title
函数。
提示
要以交互方式浏览
ParallelCoordinatesPlot
对象中的数据,请使用以下选项(有些选项在实时编辑器中不可用):缩放 - 使用滚轮进行缩放。
平移 - 点击并拖动平行坐标图以进行平移。
数据提示 - 将鼠标悬停在平行坐标图上以显示数据提示。软件突出显示绘图中对应的线条。有关示例,请参阅在绘图中更改数据归一化。
重新排列坐标 - 点击并水平拖动坐标刻度标签,将对应的坐标标尺移至另一位置。有关示例,请参阅 使用平行坐标图探索表数据。
如果基于表创建平行坐标图,则可以自定义其数据提示。平行坐标图上的数据提示始终显示所选点的值,即使您已删除所有行也是如此。
要在数据提示中添加或删除行,请右键点击图上的任意位置,然后指向修改数据提示。然后,选择或取消选择一个变量。
要添加或删除多行,请右键点击图,指向修改数据提示,然后选择更多。然后,通过点击 >> 添加变量,或通过点击 << 删除变量。
版本历史记录
在 R2019a 中推出
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)