1.什么是PCA?

人眼一般能感知的空间为二维和三维。高维数据可视化的重要目标就是将高维数据呈现于二维或三维空间中。高维数据变换就是使用降维度的方法,使用线性或非线性变换把高维数据投影到低维空间,去掉冗余属性,但同时尽可能地保留高维空间的重要信息和特征。

主成分分析法,也被称为主分量分析法,是很常用的一种数据降维方法。主成分分析法采用一个线性变换将数据变换到一个新的坐标系统,使得任何数据点投影到第一个坐标(第一主成分)的方差最大,在第二个坐标(第二主成分)的方差为第二大,以此类推。因此,主成分分析可以减少数据的维数,并保留对方差贡献最大的特征。

本文我们就来讨论一下PCA图是如何绘制的以及如何对其进行解读。

2.绘图前的数据准备

demo数据可以在https://www.bioladder.cn/shiny/zyp/bioladder2/demoData/PCA/PCA.rar下载。

2.1 PCA数据

数据来源一般是搜库结果定量表。包含2个维度的数据,一般情况下,每一行是一个基因,每一列是一个样本。

Control_1 Control_2 Control_3 a_1 a_2 a_3 b_1 b_2 b_3
P1 5.444152745 6.566785573 6.812233434 3.811535337 5.131083481 5.125230542 4.408900524 4.629775369 5.214981331
P2 0.134216388 0.142388691 0.351898471 0.321926003 0.42922913 0.343332719 0.376903515 0.462213028 0.342565149
P3 1.609307876 1.422010834 2.25798398 1.572262019 2.232753108 1.534304685 2.104263276 2.254176691 2.254898187
P4 0.429061257 0.377513542 0.530739623 0.862860941 0.87512611 0.962928809 0.738676141 0.61435028 0.636783556
P5 0.039323787 0.614189457 0.058814106 0.054956059 2.049875666 1.304961269 0.454248317 6.189823039 4.288463759
P6 0.983452665 0.438816224 0.351440757 0.273694705 0.458174067 0.396366654 0.303059088 1.0059137 0.739135456
P7 0.167541766 0.650786101 0.42608967 0.619695739 0.371239787 0.463518997 0.299902767 0.212751557 0.082936218
P8 0.573221957 0.307041881 0.29383127 0.337560003 0.34921492 0.432229805 0.401436051 0.411867875 0.385195735
P9 0.171089897 0.127747391 0.509622386 0.083465032 0.109354174 0.081346367 0.354884069 0.203768579 0.464355826
P10 51.65234686 79.41075439 47.19026319 34.88368658 84.0383659 42.72408705 66.9012715 67.39819666 62.25990223

2.2 分组数据(可选)

行名的名称和个数要和之前的PCA数据保持一致,列名为分组名称,可以包含不止一个分组。

Sample Group
Control_1 Control
Control_2 Control
Control_3 Control
a_1 a
a_2 a
a_3 a
b_1 b
b_2 b
b_3 b

3. R语言怎么画PCA

# 加载R包,没有安装请先安装  install.packages("包名")
library(ggplot2)
library(ggbiplot)
​
# 读取PCA数据文件
df = read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/demoData/PCA/data.txt",# 这里读取了网络上的demo数据,将此处换成你自己电脑里的文件header = T,    # 指定第一行是列名row.names = 1  # 指定第一列是行名)
df=t(df) # 对数据进行转置,如果想对基因分组则不用转置
​
# 读取样本分组数据文件
dfGroup = read.delim("https://www.bioladder.cn/shiny/zyp/bioladder2/demoData/PCA/sample.class.txt",header = T,row.names = 1
)
​
# PCA计算
pca_result <- prcomp(df,scale=T  # 一个逻辑值,指示在进行分析之前是否应该将变量缩放到具有单位方差)
​
# 绘图
ggbiplot(pca_result, var.axes=F,            # 是否为变量画箭头obs.scale = 1,         # 横纵比例 groups = dfGroup[,1],  # 添加分组信息,为分组文件的第一列ellipse = T,           # 是否围绕分组画椭圆circle = F)+
geom_text(                      # geom_text一个在图中添加标注的函数aes(label=rownames(df)),   # 指定标注的内容为数据框df的行名vjust=1.5,            # 指定标记的位置,vjust=1.5 垂直向下1.5个距离。   负数为位置向上标记,正数为位置向下标记size=2                # 标记大小)
​
# 更多请 ?ggbiplot 获取帮助

4.BioLadder生信云平台在线绘制PCA图

不想写代码?可以用BioLadder生信云平台在线绘制PCA。

网址:BioLadder-生物信息在线分析可视化云平台

5.PCA结果解读

是主成分分析的PC1和PC2的结果,横纵坐标分别为前两个主成分,括号内的百分比为该主成分能解释的变量的百分比。PCA得分图能将对照组和实验组样本区分开。在PCA图中,如果样本之间聚集在一起,说明这些样本差异性小;反之样本之间距离越远,说明样本之间差异性越大。不同颜色的散点表示不同实验分组的样本。

R语言如何绘制PCA图(四)相关推荐

  1. R语言如何绘制小提琴图(10)

    1.什么是小提琴图? 小提琴图是箱线图的变种,展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高. 外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一). 本文 ...

  2. R语言如何绘制韦恩图(6)

    如何绘制韦恩图 1.什么是韦恩图? ​ 维恩图用于展示在不同的事物群组(集合)之间的数学或逻辑联系,尤其适合用来表示集合(或)类之间的"大致关系",它也常常被用来帮助推导(或理解推 ...

  3. R语言如何绘制雷达图(32)

    1.什么是雷达图? ​ 雷达图是以从同一点开始的轴上表示的三个或更多个变量的二维图表的形式显示多变量数据的图形方法.轴的相对位置和角度通常是无信息的. 雷达图也称为网络图,蜘蛛图,星图,蜘蛛网图,不规 ...

  4. R语言如何绘制桑葚图(28)

    1.什么是桑葚图? 桑基图(Sankey Diagram),即桑基能量分流图,也叫桑基能量平衡图.它是一种特定类型的流程图,图中延伸的分支的宽度对应数据流量的大小. 桑基图主要由边.流量和节点组成,其 ...

  5. R语言如何绘制棒棒糖图(22)

    1.什么是棒棒糖图? 棒棒糖图,顾名思义,由点棍组成,形似棒棒糖. 棒棒糖图(lollipop chart):棒棒糖图传达了与柱形图或者条形图相同的信息,只是将矩形转变成线条,这样可减少展示空间,重点 ...

  6. R语言EXCEL绘制瀑布图

    瀑布图是反映在诸多原因和因素下,使得一个状态演变成另一个状态的过程图表,这个过程中我们可以了解哪些是导致该变化结果的主要因素,以及产生影响的强弱,R语言中一共有三个包可以做,它们分别是waterfal ...

  7. R语言ggplot绘制鸡冠花图(南丁格尔玫瑰图)

    南丁格尔玫瑰图也就是鸡冠花图,一种极坐标的​柱状图.图形的大小跟变量分组的数值呈正比.从极坐标延伸出来的每一环可以当做标尺来使用,用来表示分段的大小并代表数值的高低. 首先绘制柱状图 bar<- ...

  8. 初入R语言,绘制heatmap图

    1.安装R和RStudio,这个按照教程来就行 2.安装R包 install.packages("xlsx") #通过excel导入数据 #第一行为各种参数 #每一列为不同样本,第 ...

  9. R语言如何绘制雷达图,radarchart包的使用

    先看一下效果图 论文里面一般展示雷达图如下 下面我们使用fmsb包中的radarchart函数需要一个数据,其中第一行代表数据的最大值(10),第二行代表数据的最小值(0).否则,需要设置maxmin ...

最新文章

  1. 重学ES6 函数的扩展(下)
  2. Liunx中进程和计划任务管理
  3. 网络推广方案中解析SEO优化文章的标题设置技巧
  4. python和c++哪个好找工作-升学为主的编程学python和C++哪个好?
  5. html div box,html – 为转换后的div添加box-shadow
  6. Oracle 中 call 和 exec的区别
  7. mysql获取一个表的数据作为值插入_请问如何在mysql中得到一个即将插入数据表中的那条数据的id值(id自增长)?...
  8. [Android学习笔记四] 自定义Android组件之组合方式创建密码框组件
  9. NAT对语音业务的影响(终端控制方案…
  10. 小程序二维码海报生成
  11. spring boot 2 整合 j2Cache
  12. 什么是在网上常说的“丢包”?
  13. foxmail邮箱服务器类型,foxmail
  14. 那群“沙雕”年轻人,正在闲鱼上蹦迪
  15. ubuntu设置开机启动图形应用程序,替换默认图形桌面
  16. av_opt_set函数族详解
  17. Cocos Creator微信小游戏添加视频广告
  18. 物联网企业争抢「两轮车换电」赛道
  19. 世界顶级的计算机学校,美国大学计算机科学专业排名TOP20详情一览 世界顶尖名校谁是你的...
  20. ORACLE ORA-01653: unable to extend table 的错误处理

热门文章

  1. Lucene 应用 WordNet 的同义词典实现同义词检索(C#版)
  2. 贵的键盘就一定好吗?程序员该怎样选择一款适合自己的键盘呢,来这里参考下吧
  3. css中伪类选择器详解(a:visited不生效的原因)
  4. “我,985硕士,进万达月薪8K,我舍友去做互联网产品经理拿13K......”
  5. 为新的Facebook.com重建我们的技术栈
  6. MS Access 与 Excel区别与各自的优势
  7. Java+MySQL学生选课与成绩管理系统(数据库版)
  8. python如何创建子程序_Python中生成器与子程序的并发控制
  9. Intel Xeon CPU 命名规则
  10. hive:函数:greatest和least函数