Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >R可视乎|主成分分析结果可视化

R可视乎|主成分分析结果可视化

作者头像
庄闪闪
发布于 2021-04-09 03:29:26
发布于 2021-04-09 03:29:26
1.9K01
代码可运行
举报
运行总次数:1
代码可运行

简介

主成分分析法是很常用的一种数据降维方法[1]。该方法可以减少数据的维数,并保持对方差贡献最大的特征,相当于保留低阶主成分,忽略高阶主成分。

关于主成分的理论介绍和R语言代码实现可见前段时间赵西西写的推文:主成分分析。但是后面留了一个小尾巴,如果想对主成分结果进行可视化,那得怎么实现?有没有简便的方法呢?

正好这几天有读者问起,那今天就来说说这个问题吧。

方法一

使用ggbiplot包[2]中的ggbiplot()函数,该函数 使用ggplot2对主成分进行可视化。函数内部参数如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  ggbiplot(pcobj, choices = 1:2, scale = 1, pc.biplot =
  TRUE, obs.scale = 1 - scale, var.scale = scale, groups =
  NULL, ellipse = FALSE, ellipse.prob = 0.68, labels =
  NULL, labels.size = 3, alpha = 1, var.axes = TRUE, circle
  = FALSE, circle.prob = 0.69, varname.size = 3,
  varname.adjust = 1.5, varname.abbrev = FALSE, ...)

内部参数过多,就不做详细解释。如果对内部参数有兴趣可以通过帮助文档进行查询(?ggbiplot)。

这里使用鸢尾花数据,给出一个简单的例子。大家可以将自己的数据进行导入(如何导入?可见推文:R数据科学|第八章内容介绍),替换鸢尾花数据。

注意:检查自己数据集的数据结构是否和鸢尾花数据结构一致

这个包在github中,官方说可以使用以下参数进行下载(但是小编下载不了,只能通过强暴的方法进行,具体可见推文:。该压缩包已经处理成tar.gz放到公众号内了,如有需要,后台回复[ggbiplot]即可获得)。

使用prcomp()进行主成分分析,然后将结果保存到res.pca变量中。之后使用ggbiplot()进行可视化。其中观测的尺度因子为1(obs.scale = 1),变量的尺度因子为1(var.scale = 1),每组绘制一个椭圆(ellipse = TRUE)并添加相关系数的圆。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# install_github("vqv/ggbiplot")
library(ggbiplot)
res.pca <- prcomp(iris[, -5],  scale = TRUE)
ggbiplot(res.pca, obs.scale = 1, var.scale = 1, ellipse = TRUE, circle = TRUE)

如果想给不同组别添加分别显示不同颜色,则可以使用参数groups,然后设定为原始数据对应的组别向量(如果你的原始数据没有该列数据,可以自行构造一个向量。)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 添加组别颜色
ggbiplot(res.pca, obs.scale = 1, var.scale = 1, ellipse = TRUE,groups = iris$Species, circle = TRUE)

当然你可以在此基础上加入ggplot内部的参数,比如更改主题,更改颜色,添加标题等一系列操作。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 更改主题
ggbiplot(res.pca, obs.scale = 1, var.scale = 1, ellipse = TRUE,groups = iris$Species, circle = TRUE) +
  theme_bw() +
  theme(panel.grid = element_blank()) +
  scale_color_brewer(palette = "Set2") +
  labs(title = "庄闪闪的R语言手册",subtitle = "快来关注这个宝藏公众号呀!",caption ="绘于:洞头岛")

小编最近有幸上了两节线上的R语言数据可视化公益课,把R语言base包以及ggplot语法系统的过了一遍,如果需要补补可视化基础的朋友,可移步我的b站[账号名:庄闪闪],视频回放已等你多时了?。

方法二

使用FactoMineR包[3]PCA()函数或者使用基础包的prcomp()函数进行数据降维处理,然后使用factoextra包[4]fviz_pca_ind()函数对结果进行可视化。

这里还是以鸢尾花的数据作为例子,沿用方法一的主成分分析结果res.pca。

这个包内部有四个主要绘制主成分结果的函数。

  • fviz_pca_ind(): 各样本的散点图
  • fviz_pca_var(): 变量图
  • fviz_pca_biplot(): 各个样本和变量的联合图
  • fviz_pca(): fviz_pca_biplot()的别名

内部参数不做过多介绍,有兴趣的读者请看帮助文档。这里只对下面的代码中出现的参数进行解释。

各样本的散点图

使用散点图进行绘制(geom = "point"),颜色使用"cos2"(col.ind="cos2"),使用3阶梯度颜色(gradient.cols = c("white", "#2E9FDF", "#FC4E07" ))。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ggplot2)
library(factoextra) #可以直接通过install.packages()进行下载
# 各个样本图
fviz_pca_ind(res.pca, col.ind="cos2", geom = "point",
             gradient.cols = c("white", "#2E9FDF", "#FC4E07" ))

展示分组变量信息

如果想展示分组变量信息,可以通过habillage参数设定,和第一种方法类似,这里还加入了一些细节:各组添加椭圆(addEllipses=TRUE),图的版式使用"Dark2"(palette = "Dark2")。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fviz_pca_ind(res.pca, label="none", habillage=iris$Species,
             addEllipses=TRUE, ellipse.level=0.95, palette = "Dark2")

当然可以使用palette = c("#999999", "#E69F00", "#56B4E9"),根据论文全文配色,进行手动调整。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fviz_pca_ind(res.pca, label="none", habillage=iris$Species,
             addEllipses=TRUE, ellipse.level=0.95,
             palette = c("#999999", "#E69F00", "#56B4E9"))

个体和变量的双图

如果想绘制个体和变量的双图,可以使用fviz_pca_biplot(),内部其他参数构造相同,然后可以添加各种其他ggplot的函数,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 个体和变量的双图
# 只保留变量的标签 #按组改变颜色,添加省略号
fviz_pca_biplot(res.pca, label = "var", habillage=iris$Species,
                addEllipses=TRUE, ellipse.level=0.95,
                ggtheme = theme_bw()) +
  theme(panel.grid = element_blank()) +
  scale_color_brewer(palette = "Set1") +
  labs(title = "庄闪闪的R语言手册",subtitle = "快来关注这个宝藏公众号呀!",caption ="绘于:洞头岛")

参考资料

[1]

数据降维方法: https://github.com/EasyChart/Beautiful-Visualization-with-R

[2]

ggbiplot包: https://github.com/vqv/ggbiplot

[3]

FactoMineR包: https://cran.r-project.org/web/packages/FactoMineR/index.html

[4]

factoextra包: https://cran.r-project.org/web/packages/factoextra/index.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 庄闪闪的R语言手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
R语言主成分分析可视化(颜值高,很详细)
网络上很多R语言教程都是基于R语言实战进行修改,今天为大家介绍更好用的R包,在之前聚类分析中也经常用到:factoextra和factoMineR,关于主成分分析的可视化,大家比较常见的可能是ggbiplot,这几个R包都挺不错,大家可以比较下。
医学和生信笔记
2023/02/14
1.2K0
R语言主成分分析可视化(颜值高,很详细)
R语言PCA分析_r语言可视化代码
如果不对数据进行scale处理,本身数值大的基因对主成分的贡献会大。如果关注的是变量的相对大小对样品分类的贡献,则应SCALE,以防数值高的变量导入的大方差引入的偏见。但是定标(scale)可能会有一些负面效果,因为定标后变量之间的权重就是变得相同。如果我们的变量中有噪音的话,我们就在无形中把噪音和信息的权重变得相同,但PCA本身无法区分信号和噪音。在这样的情形下,我们就不必做定标。
全栈程序员站长
2022/11/07
2.8K0
R语言PCA分析_r语言可视化代码
R语言中的主成分方法:PCA分析和可视化实用指南
主成分分析(PCA)允许我们总结和可视化包含多个相互关联的定量变量描述的个体/观察的数据集中的信息。每个变量都可以被视为不同的维度。如果你的数据集中有3个以上的变量,那么可视化多维超空间可能会非常困难。
简说基因
2025/03/13
3281
R语言中的主成分方法:PCA分析和可视化实用指南
【R语言】factoextra生成发表级PCA主成分分析图(一)
今天我们来给大家介绍另一个做PCA分析并绘图的R包factoextra,很多SCI文章中都用到了这个R包。换句话说这个R包画出来的PCA图是发表级的。
生信交流平台
2022/09/21
1.1K0
【R语言】factoextra生成发表级PCA主成分分析图(一)
高维数据 | R语言绘图基础之主成分分析
在视觉性方面,人类普遍能够感知的是二维和三维空间。对于高维数据的可视化是将高维数据投影到二维或三维空间,去掉冗余属性,同时保留高维空间的数据和特征。说白了,高维数据的可视化就是使用降维度方法,主要分成线性和非线性两大类,关于非线性的非度量多维尺度分析NMDS见往期文章非度量多维尺度分析(NMDS),关于线性的PCA方法,见往期文章PCA做图最佳搭档-ggbiplot,本文主要针对迷弥小粉丝关于绘制线性PCA图数据处理过程遇到的问题进行记录。
黑妹的小屋
2020/08/06
2K0
ggplot2画点和分组椭圆展示主成分分析(PCA)结果的简单小例子
这个图来自链接 http://www.sthda.com/english/articles/31-principal-component-methods-in-r-practical-guide/112-pca-principal-component-analysis-essentials/
用户7010445
2021/03/14
5.7K1
PCA主成分分析实战和可视化 | 附R代码和测试数据
一文看懂PCA主成分分析中介绍了PCA分析的原理和分析的意义(基本简介如下,更多见博客),今天就用数据来实际操练一下。
生信宝典
2018/12/29
4.6K0
PCA主成分分析实战和可视化 | 附R代码和测试数据
PCA原理及实现-R
PCA是一种无参数的数据降维方法,常用的机器学习算法一种,这篇文章主要从PCA应用于解释两个方面介绍。关于PCA原理,详情这里
Jamesjin63
2022/10/25
4170
PCA原理及实现-R
R语言 主成分分析PCA(绘图+原理)
PCA 是一种较为常用的降维技术,PCA 的思想是将n维特征映射到k维上,这k维是全新的正交特征。这k维特征称为主元,是重新构造出来的k维特征。在 PCA 中,数据从原来的坐标系转换到新的坐标系下,新的坐标系的选择与数据本身是密切相关的。其中,第一个新坐标轴选择的是原始数据中方差最大的方向,第二个新坐标轴选取的是与第一个坐标轴正交且具有最大方差的方向,依次类推,我们可以取到这样的k个坐标轴。
拴小林
2021/05/31
14.2K0
R语言 主成分分析PCA(绘图+原理)
主成分分析 factoextra
factoextra是一个R软件包,可以轻松提取和可视化探索性多变量数据分析的输出,其中包括: 主成分分析(PCA),用于通过在不丢失重要信息的情况下减少数据的维度来总结连续(即定量)多变量数据中包含的信息。 对应分析(CA),它是适用于分析由两个定性变量(或分类数据)形成的大型列联表的主成分分析的扩展。 多重对应分析(MCA),它是将CA改编为包含两个以上分类变量的数据表格。 多因素分析(MFA)专用于数据集,其中变量按组(定性和/或定量变量)组织。 分层多因素分析(HMFA):在数据组织为分
用户1359560
2018/08/27
1.9K0
主成分分析  factoextra
主成分分析、K均值聚类R语言实现小实例
数据集下载链接 https://acadgildsite.s3.amazonaws.com/wordpress_images/r/wineDataset_Kmeans/Wine.csv
用户7010445
2020/03/03
1.5K0
R语言PCA可视化3D版
之前详细介绍了R语言中的主成分分析,以及超级详细的主成分分析可视化方法,主要是基于factoextra和factoMineR两个神包。
医学和生信笔记
2023/02/14
5810
R语言PCA可视化3D版
【R语言】factoextra生成发表级PCA主成分分析图(三)
观察仔细的小伙伴可能发现,在上面这张图里面有三个点比其他点要大一些,其实这三个点是三个组的中心点。那么我们怎么去除各组的中心点呢?其实只需要修改mean.poin这个参数就可以了
生信交流平台
2022/09/21
5570
【R语言】factoextra生成发表级PCA主成分分析图(三)
R语言主成分分析
在医学研究中,为了客观、全面地分析问题,常要记录多个观察指标并考虑众多的影响因素,这样的数据虽然可以提供丰富的信息,但同时也使得数据的分析工作更趋复杂化。
医学和生信笔记
2023/02/14
5910
R语言主成分分析
表达芯片数据分析3——基因差异分析绘制火山图及差异基因热图
Erics blog
2023/10/02
7141
网页工具可能没必要使用,但它很适合学习底层原理
它起初是为了解决他们课题组自己的tRNA相关转录组测序表达量矩阵的归一化标准化问题,之前的文章是Quantitative tRNA-sequencing uncovers metazoan tissue-specific tRNA regulation. Nat Commun. 2020 Aug 14;11(1):4104. doi: 10.1038/s41467-020-17879-x. 对应的数据集是GSE141436. 是一个tRNA expression dataset ,里面有 21 different samples from seven mouse tissues ,这样的矩阵确实是超出了我的能力范围:
生信技能树
2023/09/25
1960
网页工具可能没必要使用,但它很适合学习底层原理
聚类分析和主成分分析
示例数据一:现有16种饮料的热量、咖啡因含量、钠含量和价格的数据,根据这4个变量对16饮料进行聚类
生信技能树
2019/12/23
2.7K0
聚类分析和主成分分析
R tips:使用prcomp进行PCA降维
PCA分析和可视化常用的是FactoMineR和factoextra的组合,分析和出图都很方便,比如将iris数据集的四个参数降维(示例使用):
生信菜鸟团
2021/02/03
4.4K0
R tips:使用prcomp进行PCA降维
PCA-Statistics is the new sexy!!!
PCA是为了更好地展示多维数据,通过线性转化,展示保留最多信息的主成分;将样本尽可能地分散地展示在坐标轴中达到可视化的目的;
生信技能树
2019/05/24
8210
转录组-样品表达总体分布及质控可视化
在拿到表达矩阵时我们常常会对其基因表达的总体分布(可选),以及质量控制进行可视化(必须)。这里总结记录相关代码。
sheldor没耳朵
2024/08/14
2240
转录组-样品表达总体分布及质控可视化
推荐阅读
相关推荐
R语言主成分分析可视化(颜值高,很详细)
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验