PCA图我们之前讲过了(转录组不求人系列(三):PCA分析及CNS级别作图),作图方式也是NCS级别的,但是之前的图是2D版,也就是将多维数据降维2个主成分,在平面坐标轴中观察。但是如果想再增加一个主成分就需要3D版的PCA图了。3D版的PCA也是很多高分文章喜欢展示的图,所以这里我们就对之前的作图升级一下。但是重点是选择适合自己实际情况的数据,不能一味看作图。

首先做一个PCA分析,和之前一样,用PCA分析结果去作图。

setwd("F:/生物信息学")A <- read.csv("A.csv",header = T,row.names = 1)A <- A[apply(A, 1, sum) > 0, ] data <- t(A)#PCA分析需要将表达矩阵转置data.pca <- prcomp(data, scale. = T)  #这是后续作图的文件

加载数据包并定义分组​​​​​​​

library(scatterplot3d)#画3D散点图的包library(dplyr)group=c(rep("Mcc",6),rep("Pan",6))
pca.result<-as.data.frame(data.pca$x)pca.result$group<-groupscatterplot3d(pca.result[,1:3])#基本画图,选取三个主成分,分别为x,y,z,三位坐标

这样就得到一个基本的散点图:

接下来,添加颜色,分组:​​​​​​​

pca.result = pca.result %>% mutate(colour = case_when(  pca.result$group == "Mcc" ~ "#CC0000",  pca.result$group == "Pan" ~ "#2f5688",)) #定义分组并设置颜色
scatterplot3d(pca.result[,1:3],color=pca.result$colour,              pch = 16,angle=30,              cex.symbols = 2,              box=T,type="p",              main = "3D PCA Plot",              lty.hide=2,lty.grid = 2)
legend("bottom",c("Mcc","Pan"),fill=c('#CC0000',"#2f5688"),       horiz = T)#添加图例

当然,scatterplot3d还可以将每个样本点的名称显示在图上,这样就无需legend了。​​​​​​​

sd3 <- scatterplot3d(pca.result[,1:3],color=pca.result$colour,              pch = 16,angle=30,              cex.symbols = 2,              box=T,type="p",              main = "3D PCA Plot",              lty.hide=2,lty.grid = 2)text(sd3$xyz.convert(pca.result[,c("PC1","PC2","PC3")]+0.05),     labels = rownames(pca.result),     cex=1,col="black")

------------------------------分割线-----------------------------------------

除了scatterplot3d,还有一些R中使用的交互式的包画3D图,可以自己调整。但是有一个问题没有解决,那就是无法添加legend,还有不能导出图片。但是在python中可以实现,这里抛砖引玉,感兴趣的小伙伴可以探索下教教大家。​​​​​​​

library(car)library(rgl)scatter3d(pca.result$PC1,          pca.result$PC2,          pca.result$PC3,           surface = F,           point.col = rep(c('red2','green3'),                           c(6, 6)),          xlab = paste('PCA1'),           ylab = paste('PCA2'),           zlab = paste('PCA3'))

还可以添加置信椭圆:​​​​​​​

scatter3d(pca.result$PC1,           pca.result$PC2,           pca.result$PC3,           groups = as.factor(pca.result$group),           surface = FALSE, ellipsoid = TRUE,          ellipsoid.alpha=0.2,          xlab = paste('PCA1'),           ylab = paste('PCA2'),           zlab = paste('PCA3'),          grid=F)

此外,plot3d函数也能达到这种效果,但依然面临一样的问题!希望有小伙伴分享解决办法!!!

不好好作图的NCS系列(二):3D版的PCA图相关推荐

  1. 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图机器学习(GML)&图神经网络(GNN)原理和代码实现(PGL)[前置学习系列二] 上一个项目对图相关基础知识进行了详细讲述,下面进图GML networkx :NetworkX 是一个 P ...

  2. A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...

  3. android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  4. Silverlight Blend动画设计系列二:旋转动画(RotateTransform)

    原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform) Silverlight的基础动画包括偏移.旋转.缩放.倾斜和翻转动画,这些基础动画毫无疑 ...

  5. 数据与广告系列二十一:关于品牌广告,奔涌吧后浪

    作者·黄崇远 公号『数据虫巢』 全文6378字 题图ssyer.com " 看似大愚实为大智的品牌广告." 哪怕是广告行业从合约时代稳定的步入到效果广告时代,甚至是现在已经逐步的往 ...

  6. 遨博机器人展示_遨博协作机器人全系列二:iV系列智能视觉专用插件无缝对接...

    原标题:遨博协作机器人全系列二:iV系列智能视觉专用插件无缝对接 2019年9月17日,中国国际工业博览会(CIIF)在上海盛大召开,同期机器人展(RS)已成为亚洲最具影响力的机器人行业会议,是机器人 ...

  7. 软件开发随笔系列二——关于架构和模型

    软件开发随笔系列二--关于架构和模型 文章目录 软件开发随笔系列二--关于架构和模型 软件模型 功能模型 概念层 边界 参与方 分组分类 逻辑层 功能组织图 层次.模块化 接口 流程模型 概念层 业务 ...

  8. 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+kibanaV5.4.2+x-packV5.4.2安装

    相关博文: 搜索引擎ElasticSearchV5.4.2系列一之ES介绍 搜索引擎ElasticSearchV5.4.2系列二之ElasticSearchV5.4.2+klanaV5.4.2+x-p ...

  9. 【C++自我精讲】基础系列二 const

    [C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...

最新文章

  1. CUDA 内存统一分析
  2. [Android]ListView中分割线的设置
  3. 软件驱动安装在docker_docker 安装软件
  4. Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读
  5. ios html正则表达式,ios 正则表达式去html标签
  6. 火柴人小程序linux,火柴人你瞅啥小程序
  7. Vue源码阅读一:说说vue.nextTick实现
  8. 我的U盘,在某台机器上所有文件大小为0
  9. 国科大学习资料--操作系统(杨力祥)--2016年思考题(含解答)
  10. 《通关!游戏设计之路》笔记(未整理完)
  11. 红帽子linux拨号上网,centos6.5宽带拨号上网的方法
  12. 虚拟空间 搬迁 云服务器,服务器空间搬迁到虚拟主机
  13. work english words
  14. 解密车厂押注车载人机交互背后:更丰富的形式,更激烈的战场
  15. 计算机英语的save,save是什么意思_save在线翻译_英语_读音_用法_例句_海词词典
  16. AudioUnit录制音频+耳返(四)
  17. 九寨沟7.0级大地震,希望大家都能够平安
  18. python小白社区_python3+pycharm社区版小白安装步骤
  19. 19.2 NESMA 唯一和非唯一搜索条件的组合案例分析
  20. 现实还是虚拟?VR和AR谁才是未来

热门文章

  1. 三维电子沙盘数字沙盘可视化大数据人工智能教程MR VR AR M3D GIS第56课
  2. OpenGL ES 2.0 总体概述
  3. 毕业设计 Spring Boot的网上购物商城系统(含源码+论文)
  4. mybatis 插件机制
  5. 树莓派python编程入门与实战解压密码_树莓派Python编程入门与实战
  6. 怎样解决电脑右下角弹出的广告
  7. CDH6.1.0环境搭建 完成后 登录admin账户失败
  8. [激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法
  9. matlab/simulink仿真步长设置
  10. 8051单片机的片外总线结构