为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > R语言绘图PCA分析和散点图

R语言绘图PCA分析和散点图

2017-11-10 9页 doc 76KB 484阅读

用户头像

is_314871

暂无简介

举报
R语言绘图PCA分析和散点图R语言绘图PCA分析和散点图 PCA分析和散点图 gaom 今天主要跟大家演示一下简单的PCA分析,并且以散点图的形式将结果展示出 来。 首先在进行PCA分析之前,先跟大家稍微讨论下什么是PCA分析。PCA分析 又叫主成分分析,其实从字面上来理解我们可以发现它其实是和样品分组相关的。 举个简单的例子,我们观察了某种植物的株高、叶片大小、果实大小等等多种性 状,并记录每种性状对应的数值。这时候我们想看看根据这些性状信息看看我们观 察的样本是否明显的分组现象。每一种性状相当于一个维度。利用PCA分析可以 将结果投影到一个...
R语言绘图PCA分析和散点图
R语言绘图PCA分析和散点图 PCA分析和散点图 gaom 今天主要跟大家演示一下简单的PCA分析,并且以散点图的形式将结果展示出 来。 首先在进行PCA分析之前,先跟大家稍微讨论下什么是PCA分析。PCA分析 又叫主成分分析,其实从字面上来理解我们可以发现它其实是和样品分组相关的。 举个简单的例子,我们观察了某种植物的株高、叶片大小、果实大小等等多种性 状,并记录每种性状对应的数值。这时候我们想看看根据这些性状信息看看我们观 察的样本是否明显的分组现象。每一种性状相当于一个维度。利用PCA分析可以 将结果投影到一个低维的向量空间(具体计算就不详述了)。类似的比如我们多个 样本的表达谱数据,每个基因在各个样品的表达情况就可以算作一个维度。如果大 家对PCA算法感兴趣的话,可以自行百度,在这里就不进行太多的描述了。毕竟 今天主要是教大家怎么利用R进行PCA分析和结果展示。 还是第一步,我们先准 备好我们用来分析的数据。 setwd("C:/Users/gaom/Desktop")#打开文件所在路径,并将文件所在作为工作目 录 data<-read.table(file = "test_data.txt",header = T,sep = "\t")#读取数 据,并将首行作为列名 dim(data) ## [1] 2999 13 head(data) ## ID_REF T01 T02 T03 T04 T05 T06 ## 1 1007_s_at 10.198586 11.805676 10.867953 11.763660 12.072232 12.108312 ## 2 1053_at 9.594074 8.713108 9.247096 9.433265 9.092329 9.005518 ## 3 117_at 8.581763 8.603680 8.804425 8.661700 8.634979 8.606976 ## 4 121_at 12.022315 12.655329 12.627334 12.791390 12.961761 12.885307 ## 5 1255_g_at 7.228569 7.214600 7.237131 7.293417 7.276799 7.268233 ## 6 1294_at 8.828487 9.380277 9.297989 8.858985 8.995772 9.126825 ## T07 T08 T09 T10 T11 T12 ## 1 10.646868 10.852744 10.675898 11.137663 10.796737 11.102408 ## 2 9.087681 9.027208 8.965283 8.958309 9.275010 8.940965 ## 3 8.625838 8.577244 8.646751 8.625843 8.625164 8.522129 ## 4 13.402044 13.240126 13.088883 13.234099 13.382903 13.472223 ## 5 7.197440 7.262662 7.289796 7.232249 7.202364 7.306229 ## 6 9.002385 9.003561 9.006278 9.006721 9.018183 9.164313 上述数据为从GEO数据库随意找的基因表达。其中第一列为基因探针号,后 续几列则为T01到T12的12个样品对应的表达量数据,每三个样品为一组。因 为数据是拼凑的,所以这里不关注探针具体信息了。 准备好数据之后我们就开始进行PCA计算了。其实代码非常简单。 pca<- prcomp(t(data[,-1]), scale=T) head(pca$x) ## PC1 PC2 PC3 PC4 PC5 PC6 ## T01 -43.457435 -44.950031 8.305571 3.210563 -7.4280481 14.818150 ## T02 42.067255 -19.142248 -25.574041 21.120294 -5.7930990 14.702922 ## T03 -2.123455 -21.512488 -11.192474 17.583006 15.2149034 -34.730308 ## T04 8.166077 -4.774814 22.837578 -11.364128 8.4021038 -6.921738 ## T05 18.214073 -5.836807 18.522768 -10.941626 -0.6183613 -5.548845 ## T06 27.219529 -5.519328 26.649872 -11.054961 -4.1480413 5.097715 ## PC7 PC8 PC9 PC10 PC11 PC12 ## T01 -1.966342 9.2181269 -1.520882 -1.060835 3.048498 2.731227e-13 ## T02 5.832197 8.9793018 9.386187 1.668761 1.705474 2.674666e-13 ## T03 -5.168168 -9.7483411 -11.570320 2.618203 -4.221456 2.738955e-13 ## T04 27.782986 7.5829007 9.726761 -3.391763 -21.900485 2.730871e-13 ## T05 7.039535 -8.9173716 -2.239005 -17.514433 29.700906 2.736544e-13 ## T06 -30.026232 -0.8253129 -5.207037 12.349414 -8.900676 2.681674e-13 summary(pca) ## Importance of components: ## PC1 PC2 PC3 PC4 PC5 PC6 ## Standard deviation 21.9980 21.7992 18.5932 16.67518 16.1346 15.16897 ## Proportion of Variance 0.1614 0.1585 0.1153 0.09272 0.0868 0.0 7672 ## Cumulative Proportion 0.1614 0.3198 0.4351 0.52780 0.6146 0.6 9133 ## PC7 PC8 PC9 PC10 PC11 ## Standard deviation 14.48695 14.01978 13.4814 13.09112 12.8896 ## Proportion of Variance 0.06998 0.06554 0.0606 0.05714 0.0554 ## Cumulative Proportion 0.76131 0.82685 0.8875 0.94460 1.0000 ## PC12 ## Standard deviation 2.859e-13 ## Proportion of Variance 0.000e+00 ## Cumulative Proportion 1.000e+00 上述数据中,pca$x就是后面我们画pca图要用的数据。而在summary(pca)中我们看到的Proportion of Variance就是各个主成分的方差占所有方差的比值,即对应的贡献率。而Cumulative Proportion则对应的百分比累积值。从上述结果看这组数据pca结果并不是很好,所以应该肯定会有一些分组的结果不太好。不过我们今天主要是展示结果,就不在意这些细节了。 做完上述的计算,下面就进入我们的结果展示阶段。 首先用基本画图函数展示。 plot(pca$x[,1:2] ) group <- factor(c(rep("A1", 3), rep("A2", 3),rep("B1", 3),rep("B2", 3)))#这里我们添加分组信息 colour_group<-rainbow(length(unique(group)))#利用rainbow函数选择颜色 colour<-colour_group[as.numeric(factor(group))]#创建颜色向量 colour ## [1] "#FF0000FF" "#FF0000FF" "#FF0000FF" "#80FF00FF" "#80FF00FF" ## [6] "#80FF00FF" "#00FFFFFF" "#00FFFFFF" "#00FFFFFF" "#8000FFFF" ## [11] "#8000FFFF" "#8000FFFF" plot(pca$x[,1:2],col = colour ,pch = c(21,22,23,24)[group])#在plot函数 中我们把分组信息和颜色添加进去 legend("topleft", legend = levels(group),col = colour_group, pch = c(21,22,23,24))#添加legend title("test") 这是我们用基本函数对pca分析结果的展示。除此外我们也可以利用ggplot2包进行相同的图片绘制。示例如下: library(ggplot2) group2<-data.frame(group) pca_reuslt<-as.data.frame(pca$x) pca_reuslt<-cbind(pca_reuslt,group2) p<-ggplot(pca_reuslt)+geom_point(aes(x=pca_reuslt[,1],y=pca_reuslt[,2],color=pca_reuslt$group,shape = pca_reuslt$group),size=5) p<-p+theme(legend.title =element_blank())+labs(x="PCA1",y="PCA2") p 好了,上面那些基本的结果展示我们已经结束了。下面我们开始把这个图的档次再提高一点。比如,我们画了二维的,现在我们画个三维的PCA结果吧。 library(scatterplot3d) par(mar=c(5.1, 4.1, 4.1, 8.1), xpd=TRUE) scatterplot3d(pca_reuslt[,1:3],pch=20 ,color=colour,angle=45,main = "test_3D",cex.symbols = 2,mar=c(5.1, 4.1, 4.1, 8.1)) legend("right",legend = group,col = colour,pch = 20,bg="white",xpd=TRUE,inset= -0.5)#设置位置为right后,可以用inset来移到legend位置。 除此之外,我们可以考虑把相同的组进行一个圈定,方便我们更好的观察结果。 library(ggfortify)#使用这个包时可能要注意R的版本,我刚开始用较老的版本就用 不了这个包。 data2<-cbind(t(data[,-1]),group2) autoplot(pca,data = data2,colour = 'group',label = TRUE,frame = TRUE) 这次的数据只有12个样品,所以点太少了。如果点比较多的话,还可以在 autoplot函数中加上frame.type = 'norm',这样就变成用椭圆形把分组的点圈起来 了。 大家也可以通过ggfortity包的说明发现更多有趣的使用方法。
/
本文档为【R语言绘图PCA分析和散点图】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索