# parallelcoords


平行坐标图

函数库: TyStatistics

# 语法

h = parallelcoords(x)
h = parallelcoords(x,Key=Value)
h = parallelcoords(ax,_)

# 说明

h = parallelcoords(x) 为矩阵 x 中的多元数据创建一个平行坐标图。使用平行坐标图可以对高维数据进行可视化,其中每次观测都由其坐标值与其坐标指标对应绘制所表示。parallelcoords 还返回 Line 对象向量,其中每一个表现 x 的行。示例


h = parallelcoords(x,Key=Value) 使用由一个或更多个键值参数对指定的选项创建平行坐标图。比如,您可以标准化 x 中的数据或者沿着图的竖直方向给坐标上标记。示例


h = parallelcoords(ax,_) 指定平行坐标图绘制的图窗 ax。

# 示例

分组数据的平行坐标图

读取 Fisher 鸢尾花卉数据集。

using TyStatistics
using TyPlot
include(pkgdir(TyStatistics)*"/data/PlotData/parallelcoords/fisheriris.jl") 

这组数据包含来自鸢尾花属植物的三个种的四个指标(花萼长度、花萼宽度、花瓣长度和花瓣宽度)。矩阵 meas 包含 150 个个体的所有四个指标。字符串向量 species 包含这 150 个个体所属的种名。

创建一个包含样本数据的所有指标变量名称的字符串向量。

labels = ["Sepal Length", "Sepal Width", "Petal Length", "Petal Width"]

使用 meas 中的测量数据构造平行坐标图。使用 species 对数据进行分组,对每个组使用不同的颜色,使用变量名为竖直轴打标签。

parallelcoords(meas; Group=species, Labels=labels)

结果图像对每个观测(花)都包含一条线。每条线的颜色表示花朵的种。

带有分位数的平行坐标图

读取 Fisher 鸢尾花卉数据集。

using TyStatistics
using TyPlot
include(pkgdir(TyStatistics)*"/data/PlotData/parallelcoords/fisheriris.jl") 

这组数据包含来自鸢尾花属植物的三个种的四个指标(花萼长度、花萼宽度、花瓣长度和花瓣宽度)。矩阵 meas 包含 150 个个体的所有四个指标。字符串向量 species 包含这 150 个个体所属的种名。

创建一个包含样本数据的所有指标变量名称的字符串向量。

labels = ["Sepal Length", "Sepal Width", "Petal Length", "Petal Width"]

使用 meas 中的数据创建一个平行坐标图。使用 species 对数据进行分组,只绘制每个组的 25,50 以及 75 分位数。使用变量名为竖直轴打标签。

parallelcoords(meas; Group=species, Labels=labels, Quantile=0.25)

图形把每个组的中位值显示为实线,四分位值显示为相同颜色的点线。比如,蓝色实线表示 setosa 鸢尾花属每个变量的中位值。蓝色实线下的蓝色点线表示这些数据的 25 分位数,而蓝色实线上的蓝色点线表示这些数据的 75 分位数。

调整平行坐标图中的线属性

读取 Fisher 鸢尾花卉数据集。

using TyStatistics
using TyPlot
include(pkgdir(TyStatistics)*"/data/PlotData/parallelcoords/fisheriris.jl") 

这组数据包含来自鸢尾花属植物的三个种的四个指标(花萼长度、花萼宽度、花瓣长度和花瓣宽度)。矩阵 meas 包含 150 个个体的所有四个指标。字符串向量 species 包含这 150 个个体所属的种名。

创建一个包含样本数据的所有指标变量名称的字符串向量。

labels = ["Sepal Length", "Sepal Width", "Petal Length", "Petal Width"]

使用 meas 中的数据创建一个平行坐标图。使用 species 对数据进行分组,只绘制每个组的 25,50 以及 75 分位数。使用变量名为竖直轴打标签。将线宽设置为 2。

parallelcoords(meas; Group=species, Labels=labels, Quantile=0.25, linewidth=2)

像这样指定 linewidth 会使图像中的每条线宽度均为 2.

重新绘制平行坐标图,但是这次使用句柄来仅让表示 setosa 鸢尾花属的数据中位数值的线的宽度增加。

figure()
h = parallelcoords(meas; Group=species, Labels=labels, Quantile=0.25)
h = 9-element Vector{PyCall.PyObject}:

 PyObject <matplotlib.lines.Line2D object at 0x00000000B95E95C8>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B95EE848>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B95EEAC8>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B96038C8>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B960BE48>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B9610148>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B96228C8>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B962AEC8>
 PyObject <matplotlib.lines.Line2D object at 0x00000000B962F1C8>

返回的向量 h 包含由 parallelcoords 创建的每一条线。比如,h[1] bioassay第一个分组变量(setosa) 的中位线。

使用点记号增加表示 setosa 鸢尾花属的数据中位数值的线的宽度。

h[1].set_linewidth(2)
legend([h[1], h[4], h[7]],["setosa", "versicolor", "virginica"])

# 输入参数

x — 多元输入数据
数值矩阵

多元输入数据,指定为 nxp 数值矩阵。其中 n 为 x 的行,每一行表示 x 中的一次观测。p 为 x 的列,每一列表示 x 中的一个变量。

parallelcoords 将 x 中的 NaN 值视为 missing 而不绘制对应的坐标值。

ax — 绘图坐标区
Axes 对象

绘图的坐标区,指定为 Axes 对象。如果未指定 ax,则 parallelcoords 使用当前坐标区创建绘图。

# 键-值参数

实现 Key1=Value1,...,KeyN=ValueN 功能的键-值参数,其中 Key 与 Value 相互对应。键-值参数必须在其余参数以及一个英文百分号以后,但是内部出现顺序不重要。

示例: Group=speciese,Quantile=0.25 将输入数据使用 species 进行分组,每一组使用不同的颜色,且仅绘制 25,50,75 分位的数据。

Group — 输入数据的分组变量
数值数组 | 字符串数组 | 元组

输入数据的分组变量,指定为包含每次观测的组指标的数值数组。

这个数据也可以是包含每次观测的组名的字符串数组或元组。

Labels — 竖直轴标签
字符串数组 | 元组

竖直轴标签,指定为包含标签名的字符串数组或元组。

示例: Labels=["Sepal Width","Sepal Length"]

Quantile — 输入数据要绘制的分位数
介于 (0,1) 的标量值

输入数据要绘制的分位数,指定为介于 (0,1) 的标量值。如果您为 Quantile 指定一个值 alpha,那么parallelcoords 仅绘制 x 每个变量的 50, 100*alpha, 100-100*alpha 分位值。

分位数绘制选项在 x 包含许多次观测时提供了对数据的有用的总结。

示例: Quantile=0.25

Standardize — 输入数据的标准化方法
"off"(默认值) | "on"

标准化输入数据的方法,指定为下列值之一:

"off" 不进行标准化。
"on" 在绘制之前将 x 的每一列进行放缩使得它们的均值为 0,标准差为 1。

示例: Standardize="on"

# 输出参数

h — 图形句柄
图形句柄向量

图形句柄,以图形句柄向量形式返回。如果您指定了 Quantile 参数,则 h 包含每三条线的一个句柄。如果您指定了 Quantile 与 Group 参数,则 h 每组包含三个句柄。

# 另请参阅

glyphplot