通常情况下,对于三维数据,我们会用三维图表来展示,想要从三维图表上观察出一定的规律,需要一定的空间想象力;

而三元相图,其实就是用二维平面的1个等边三角形来表征三维数据,三角形的每一条边对应1个维度,将三维的数据映射到二维平面上,观察起来更加的直观

R语言的vcd 包中提供了 ternaryplot函数,可以方便的进行三元相图的绘制

代码示例:

# x y z
# A1 1 8 5
# A2 2 9 8
# A3 3 1 7
# 假设有3个样本,对应x,y,z 3个维度的值,
# 将这批数据用矩阵 x 保存
## plot
ternaryplot(x)

效果图如下:

R语言三元相图的做法-LMLPHP

从图中可以看到三角形的三个顶点分别对应x,y, z 三个维度,对于从每个点到对边的垂线,这条垂线上标记刻度,

要注意对于每个维度的值,都进行了归一化,归一化到0-1的范围,所以刻度线上都标记的是0.2, 0.4, 0.6, 0.8

红色的点每个点代表1个样本,那么样本点的位置是如何确定的呢

这是从百度文库找到的解释:通过做平行线的方式,唯一确定1个点的位置

R语言三元相图的做法-LMLPHP

那么从三元相图上我们能够看出什么结果?

对应每一个样本点,可以看出其三个维度的比例;

对于多个样本而言,我们可以看到样本的相似性和差异性,在三个维度上组成接近的样本,其位置必然也是相近的

通过挑选合适的三个维度,我们也能得到类似排序分析的结果,能看出样本大概的一个分类情况;

 
05-08 08:27