用R做主坐标分析-PCoA
原始数据为遗传距离矩阵,使用ape包的pcoa函数进行主坐标分析,然后使用ggplot2进行绘图。
# 简述
主坐标分析(Principal Coordinates Analysis,PCoA),可呈现研究数据相似性或差异性的可视化坐标,是一种非约束性的数据降维分析方法,可用来研究样本群落组成的相似性或相异性。PCoA通过一系列的特征值和特征向量进行排序后,选择主要排在前几位的特征值,找到距离矩阵中最主要的坐标,结果是数据矩阵的一个旋转,它没有改变样本点之间的相互位置关系,只是改变了坐标系统。PCoA的目的是在尽力保证原本的距离关系不发生改变的前提下对高维数据进行低维投影,也就是使得原始数据间点的距离与投影中即结果中各点之间的距离尽可能相关。
# 代码
library(ape)
library(ggplot2)
ind = read.table('905_ind.txt',skip = 1,row.names = 1, stringsAsFactors = FALSE) # 读取遗传距离矩阵
library(readr)
group = read_csv('905_group.csv', col_names = FALSE) # 读取分组数据
colnames(ind)=rownames(ind)
pcoa_ind = pcoa(ind) # pcoa计算
pc = as.data.frame(pcoa_ind$vectors) # 将pcoa变换后的数据读入数据框
colnames(pc)=gsub('Axis.','PCo',colnames(pc))
pc$group=as.factor(group$X2) # 添加分组信息
ggplot(pc,aes(PCo1,PCo2,color=group,group = group))+
geom_hline(yintercept=0,linetype=4,color='black')+
geom_vline(xintercept=0,linetype=4,color='black')+ # 添加零值参考线
stat_ellipse(size=0.8,level = 0.99)+ # 99%置信椭圆,level对应置信水平
ggtitle('PCoA plot (99% ie)')+ geom_point(size=1.2)+ # 散点图
theme_bw()+ theme(panel.grid=element_blank(),axis.text = element_text(size=10),axis.title = element_text(size=14,face = bold)) # 字体与外观
ggsave('905.png',height=12,width = 18,units = cm) # 保存图片为png格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
上次更新: 2024/03/11, 23:50:27