主成分分析(Principal Component Analysis,PCA),是一种降维方法,也是在文章发表中常见的用于显示样本与样本之间差异性的计算工具。在上一次教程中,我们教大家如何绘制二维主成分分析图,不过有时候二维的平面没有办法展示出样本之间的差异,所以需要用更多维度,比如三维主成分分析图来展示。今天的教程,我们以一篇发表在Blood (IF = 16.562)上的文章为例进一步解读PCA的图形绘制。在这个实例中,通过对芯片表达谱数据进行PCA分析,观察前三个PC(PC1, PC2, PC3),可以看出细胞按照不同来源:peripheral blood (PB),bone marrow (BM), 和lymph nodes (LN)分成三组。
本次教程为大家带来是,是如何根据表达谱数据,通过运用主成分分析的方法,显示样本与样本之间的差异性,并且在三维坐标上展示这些差异。
01
数据读取
首先我们加载需要用到的R包,scatterplot3d包用于作图gmodels包用于计算PCA。
读入表达谱数据并显示文件前6行,每一列为一个样本,每一行为一个基因。我们使用表达谱样本一共有10个,其中M1到M5为Case,M6-M10为control。
02
主成分分析
使用gmodels包中的fast.prcomp函数计算PCA。该包计算运行所用时间比R内置prcomp函数要快很多。计算完成后查看PCA计算前6行,可以看出最终的结算结果为一个矩阵,一共有10列10行,每一行为一个样本,每一列为一个主成分(PC)。我们就用这样一个PCA计算结果,来看Case和Control这两组样本之间的差异。然后建立一个data.frame,将PC数据和表型数都存入进来。这一步与上一版教程是一样的~
然后,便是绘图的时刻了~
03
基础绘图
首先,我们使用前三个PC,绘制基本三维图。
这样,一张三维图就制作完成了。当然,如果我们真的在ppt或者文章中绘制成这个样子,肯定会被老板骂的一(gou)无(xue)是(lin)处(tou)~ 所以,我们需要对图进行美化和调整。
04
初级调整
我们将case和control用不同的颜色进行展示。
05
中级调整
从这张图中,我们可以基本上出case和control在三维空间中分成了两组。当然,图片中的点有些小,而且三维图的角度还不够,所以需要进行进一步调整。
同样,我们也可以为case和control增加不同的形状。
06
高级调整
不知道大家是否发现了一个问题,我们绘制的这张三维图上,是没有图注信息的。虽然我们可以根据代码中的颜色和形状来判断哪些是case,哪些是control,但是这样毕竟不方便,所以我们需要为图片加上图注。
这样,case 和control就一目了然了~
07
终级调整
当然,在这张图上,我们一共有10个样本,如果我们想知道哪些点代表哪些样本,通过这张图是非常不方便的。所以我们需要以text的方式,将样本名加在三维图中。
这样,每一个样本都可以看的清清楚楚。不过,如果是100个样本,我们想要将所有样本显示出来是非常不现实的,大部分我们只需要将特定的样本显示出来。给数据新建一个Label,显示那些重要的样本。
结语
这样,一张完美的三维PCA散点图就诞生了~相信这样一张图,会为大家的文章带来无限可能性。科研做图的一次次完善,都与高分杂志距离的每一次次缩减。我们与顶级杂志的距离,也许只差一张完美的图。
未经许可请勿随意转载,