不好好作图的NCS系列(二):3D版的PCA图
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<-group
scatterplot3d(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图相关推荐
- 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)
图机器学习(GML)&图神经网络(GNN)原理和代码实现(PGL)[前置学习系列二] 上一个项目对图相关基础知识进行了详细讲述,下面进图GML networkx :NetworkX 是一个 P ...
- A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)
图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...
- android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- Silverlight Blend动画设计系列二:旋转动画(RotateTransform)
原文:Silverlight & Blend动画设计系列二:旋转动画(RotateTransform) Silverlight的基础动画包括偏移.旋转.缩放.倾斜和翻转动画,这些基础动画毫无疑 ...
- 数据与广告系列二十一:关于品牌广告,奔涌吧后浪
作者·黄崇远 公号『数据虫巢』 全文6378字 题图ssyer.com " 看似大愚实为大智的品牌广告." 哪怕是广告行业从合约时代稳定的步入到效果广告时代,甚至是现在已经逐步的往 ...
- 遨博机器人展示_遨博协作机器人全系列二:iV系列智能视觉专用插件无缝对接...
原标题:遨博协作机器人全系列二:iV系列智能视觉专用插件无缝对接 2019年9月17日,中国国际工业博览会(CIIF)在上海盛大召开,同期机器人展(RS)已成为亚洲最具影响力的机器人行业会议,是机器人 ...
- 软件开发随笔系列二——关于架构和模型
软件开发随笔系列二--关于架构和模型 文章目录 软件开发随笔系列二--关于架构和模型 软件模型 功能模型 概念层 边界 参与方 分组分类 逻辑层 功能组织图 层次.模块化 接口 流程模型 概念层 业务 ...
- 搜索引擎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 ...
- 【C++自我精讲】基础系列二 const
[C++自我精讲]基础系列二 const 0 前言 分三部分:const用法.const和#define比较.const作用. 1 const用法 const常量:const可以用来定义常量,不可改变 ...
最新文章
- CUDA 内存统一分析
- [Android]ListView中分割线的设置
- 软件驱动安装在docker_docker 安装软件
- Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读
- ios html正则表达式,ios 正则表达式去html标签
- 火柴人小程序linux,火柴人你瞅啥小程序
- Vue源码阅读一:说说vue.nextTick实现
- 我的U盘,在某台机器上所有文件大小为0
- 国科大学习资料--操作系统(杨力祥)--2016年思考题(含解答)
- 《通关!游戏设计之路》笔记(未整理完)
- 红帽子linux拨号上网,centos6.5宽带拨号上网的方法
- 虚拟空间 搬迁 云服务器,服务器空间搬迁到虚拟主机
- work english words
- 解密车厂押注车载人机交互背后:更丰富的形式,更激烈的战场
- 计算机英语的save,save是什么意思_save在线翻译_英语_读音_用法_例句_海词词典
- AudioUnit录制音频+耳返(四)
- 九寨沟7.0级大地震,希望大家都能够平安
- python小白社区_python3+pycharm社区版小白安装步骤
- 19.2 NESMA 唯一和非唯一搜索条件的组合案例分析
- 现实还是虚拟?VR和AR谁才是未来
热门文章
- 三维电子沙盘数字沙盘可视化大数据人工智能教程MR VR AR M3D GIS第56课
- OpenGL ES 2.0 总体概述
- 毕业设计 Spring Boot的网上购物商城系统(含源码+论文)
- mybatis 插件机制
- 树莓派python编程入门与实战解压密码_树莓派Python编程入门与实战
- 怎样解决电脑右下角弹出的广告
- CDH6.1.0环境搭建 完成后 登录admin账户失败
- [激光原理与应用-45]:《焊接质量检测》-2- 常见焊接缺陷与检验方法
- matlab/simulink仿真步长设置
- 8051单片机的片外总线结构