主成分分析 | 3D图形绘制 | 教程(代码)

  • 主成分分析(Principal Component Analysis,PCA),一种线性降维的方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。

不同的分析思路和分析对象,使用PCA结果解释的意义是不同的,主要还是看自己的数据以及自己对其的理解。


  • 二维PCA
image
  • 3D PCA图形
image

原文:High-resolution spatiotemporal transcriptomemapping of tomato fruit development and ripening

如果你感兴趣可以去了解一下,非常牛X的,优秀的,nice的一篇文章。数据量非常的大,做的也是非常的细致。

image

3D PCA 代码

# 导入包
library(rgl)
Sys.setenv(LANGUAGE = "en") #显示英文报错信息
options(stringsAsFactors = FALSE) #禁止chr转成factor

导入表达量数据

# 读取表达量数据
df <- read.csv("PCA_inputdata.csv", header = T, row.names = 1)
df[1:5,1:5]
> df[1:5,1:5]
       sample001 sample002 sample003 sample004 sample005
AIM2         1.4       0.1       1.1       1.3      -1.2
ANXA11      -0.1       0.8       0.3       0.0      -0.1
APLN         0.3       0.0       0.5      -1.4       0.9
APOA1        0.0      -1.2       0.2      -0.7       0.2
APOA2       -0.1      -0.8       0.4      -0.5      -0.
> dim(df)
[1] 311 297

PCA分析

## 一个函数搞定
pca <- prcomp(t(df))

3d PCA图

# 01.导入分类数据
lgg_sample <- read.table("group1.txt", header = T)$x
## class(lgg_sample) ## 查看数据类型
gbm_sample <- read.table("group2.txt", header = T)$x

## 
# 准备颜色
lgg_color <- rep("yellow", length(lgg_sample))
names(lgg_color) <- lgg_sample
gbm_color <- rep("red", length(gbm_sample))
names(gbm_color) <- gbm_sample
groups <- c(lgg_color, gbm_color)
plot3d(pca$x[,1:3], # 取前三个主成分
       xlab="Comp.1", ylab="Comp.2", zlab="Comp.3", 
       col=groups, # 按groups填充颜色
       type="s", # 画球,'p' for points, 's' for spheres, 'l' for lines, 'h' for line segments 
       size=1, #球的大小
       lwd=2, box=T)

rgl.snapshot("PCA01.png")

到此步,你可以拖动你的鼠标来确定图形的方向和大小,很有意思。这是一个动态的图形。

但是比较遗憾,此图形只能输出.png格式的图形。如你其他的绘制方法,你也可以一起来分享一下哦!

## 五颜六色的图形,你也喜欢
plot3d(pca$x[,1:3],
       col=c("red","gray0"),# "blue","cyan","darkblue","green","darkgreen","lightpink"),
       size = 10,
       xlab="PC1",ylab="PC2",zlab="PC3")

image


结束语:

如果你看到这里,那么你是最棒的!我在前面的教程中也提及,我们最终还是得回归到绘图的本质。

那什么是“绘图的本质呢”,个人观点:本质就是你开始绘制图形的初心,我们一切都是为了用来解释说明数据的可用性,用图形的形式直观的表达出数据。数据是不会直接告诉你它所想要表达的意思,那只有看分析者使用图形来阐述。我们要理解这个图形的最基础的东西,如它的原理之类的,我们可以无需具体理解这个图形绘制的每一个步骤,因为你不是开发软件或开发数据包的。

但是,我们还是需要理解它运作的原理是什么?这部分,也许是可能被忽略的。我们记住:万变不离其宗,越是最基础的东西,越容易被忽略,但也是最重要的。基本,所有形变,都是在质的基础上。

我们在追求高质量图形的同时,也需要追求高质量的意义!(不知你是否理解)

视频教程
3D 主成分分析教程(PCA) | 图形绘制 - (zhihu.com)

3D 主成分分析教程(PCA)-(Wechat) | 图形绘制


“小杜的生信筆記” 公众号、知乎、、B站平台,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!

你可能感兴趣的:(主成分分析 | 3D图形绘制 | 教程(代码))