MATLAB parallelplot()绘制平行坐标图(附带实例)
在 MATLAB 中,利用函数 parallelplot() 可以创建平行坐标图,其调用格式如下:
【实例】使用分 bin 数据创建平行坐标图。在编辑器中编写以下程序并运行:

图 1 平行坐标图(1)
【实例 2】对图中代表类别的坐标变量重新排序。在编辑器中编写以下程序并运行:

图 2 平行坐标图(2)
继续在编辑器中编写以下程序并运行:

图 3 更改Cause中事件的顺序得到的平行坐标图
继续在编辑器中编写以下程序并运行:

图 4 为每个组分配不同的颜色得到的平行坐标图
parallelplot(tbl) % 根据表 tbl 创建一个平行坐标图。默认绘制所有表列 % 图中的每个线条代表表中的一行,图中的每个坐标变量对应表中的一列 parallelplot(tbl,'CoordinateVariables',coordvars) % 根据表 tbl 中的 coordvars 变量创建一个平行坐标图 parallelplot(__,'GroupVariable',grpvar) % 使用 grpvar 指定的表变量对图中的线条进行分组 parallelplot(data) % 根据数值矩阵 data 创建一个平行坐标图 parallelplot(data,'CoordinateData',coorddata) % 根据矩阵 data 中的 coorddata 列创建一个平行坐标图 parallelplot(__,'GroupData',grpdata) % 使用 grpdata 中的数据对图中的线条进行分组
【实例】使用分 bin 数据创建平行坐标图。在编辑器中编写以下程序并运行:
load patients % 加载 patients 数据集 X = [Age Height Weight]; % 根据 Age、Height 和 Weight 值创建一个矩阵 p = parallelplot(X); % 使用矩阵数据创建一个平行坐标图 p.CoordinateTickLabels = {'Age(years)','Height(inches)',... 'Weight(pounds)'}; min(Height) % 获取最小值,输出略 max(Height) % 获取最大值,输出略 binEdges = [60 64 68 72]; bins = {'short','average','tall'}; % 创建一个新分类变量,将每个患者分别归入 short、average 或 tall groupHeight = discretize(Height,binEdges,'categorical',bins); p.GroupData = groupHeight; % 使用 groupHeight 值对平行坐标图中的线条分组运行程序后,输出如下图所示的图形:

图 1 平行坐标图(1)
【实例 2】对图中代表类别的坐标变量重新排序。在编辑器中编写以下程序并运行:
outages = readtable('outages.csv'); % 将数据以表形式读入工作区中 coordvars = [1 3 4 6]; % 选中表中的列构成子集 p = parallelplot(outages,'CoordinateVariables',coordvars,... 'GroupVariable','Cause'); % 创建平行坐标图,根据导致停电的事件对线条分组运行程序后,输出如下图所示图形:

图 2 平行坐标图(2)
继续在编辑器中编写以下程序并运行:
categoricalCause = categorical(p.SourceTable.Cause); % 将 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 变量运行程序后,输出如下图所示图形:

图 3 更改Cause中事件的顺序得到的平行坐标图
继续在编辑器中编写以下程序并运行:
p.Color = parula(10); % 通过更改 p 的 Color 属性,为每个组分配不同的颜色运行程序后,输出如下图所示图形:

图 4 为每个组分配不同的颜色得到的平行坐标图