主成分分析完如果选用前两个个主成分画散点图,自己的各个类群分组不是很明显,这个时候可以选用3个主成分,画一个三维的散点图来看看。但是之前自己也没有画过,正好今天有人问到了这个,就查了查ggplot2的扩展包有没有做这个事情的,找了一个​​ggrgl​​,接下来试一下能不能行


首先是安装

帮助文档

​https://github.com/coolbutuseless/ggrgl​

安装命令

remotes::install_github('coolbutuseless/ggrgl', ref='main')

​remotes​​​也是一个R包,如果提示你没有这个R包的话,使用​​install.package('remotes')​​来安装

我运行安装的过程遇到了一个报错是​​(converted from warning) cannot remove prior installation of package ‘rlang’​​这种情况通常是把rlang这个包手动删除,然后再重新运行安装的命令就可以了

虽然安装成功了,但是运行代码是没有结果的,代码如下

ggplot(data=pca.result)+
geom_sphere_3d(aes(x=PC1,y=PC2,z=PC3))

安装另外一个包的时候遇到了报错

​devtools::install_github("coolbutuseless/devoutrgl")​

Error: Failed to install 'unknown package' from GitHub:
HTTP error 403.
API rate limit exceeded for 218.2.103.18. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

Rate limit remaining: 0/60
Rate limit reset at: 2021-05-16 09:18:58 UTC

To increase your GitHub API rate limit
- Use `usethis::browse_github_pat()` to create a Personal Access Token.
- Use `usethis::edit_r_environ()` and add the token as `GITHUB_PAT`.

暂时还不知道是什么原因

ggplot2的扩展包画三维散点图暂时搞不定了,使用基础绘图函数吧

找到了一个参考链接

​http://www.sthda.com/english/wiki/scatterplot3d-3d-graphics-r-software-and-data-visualization​

介绍的还挺详细的,使用到的是​​scatterplot3d​​R包

首先是主成分分析
df.pca<-prcomp(iris[,1:4])
summary(df.pca)
pca.result<-df.pca$x
pca.result<-data.frame(pca.result)
head(pca.result)
pca.result$Species<-iris$Species

总共数据是150,准备150个颜色和150个形状

colors <- c("#999999", "#E69F00", "#56B4E9")
colors <- colors[as.numeric(pca.result$Species)]
shape<-16:18
shape<-shape[as.numeric(pca.result$Species)]
画图
library("scatterplot3d")
s3d <- scatterplot3d(pca.result[,1:3],
pch = shape,
color=colors,
cex.symbols = 2)
legend("top", legend = levels(pca.result$Species),
col = c("#999999", "#E69F00", "#56B4E9"),
pch = c(16, 17, 18),
inset = -0.1, xpd = TRUE, horiz = TRUE)

最终结果如下


R语言画三维散点图展示主成分分析(PCA)的结果_github image.png

欢迎大家关注我的公众号

小明的数据分析笔记本


小明的数据分析笔记本 公众号 主要分享:1、R语言和python做数据分析和数据可视化的简单小例子;2、园艺植物相关转录组学、基因组学、群体遗传学文献阅读笔记;3、生物信息学入门学习资料及自己的学习笔记!