前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RunTSNE二维及三维结果可视化

RunTSNE二维及三维结果可视化

作者头像
生信技能树jimmy
发布2024-06-25 20:40:22
2330
发布2024-06-25 20:40:22
举报
文章被收录于专栏:单细胞天地

前情提要

单细胞PCA降维结果理解以及细胞聚类分群及其可视化中,除了有PCA以及聚类分群结果的可视化以外,都展示了一下UMAP图

UMAP图是运行完RunUMAP()的线性降维可视化结果,和RunUMAP()同样起非线性降维作用的还有RunTSNE()

单细胞PCA降维结果理解中,我们运行完RunPCA之后,一共会保留下来50个维度,根据不同维度的相关性基因可以区分不同的细胞类群。但PCA通常只能显示数据的线性结构,不够直观

可以使用t-分布邻域嵌入算法(t-SNE)或统一流形逼近与投影(UMAP)等非线性降维方法,在二维或三维图中为每个数据点提供一个位置,对高维数据进行可视化

RunTSNE()及其参数

代码语言:javascript
复制
pbmc <- RunTSNE(pbmc,
                reduction = "pca",
                dims = 1:10,
                dim.embed = 3)

常用的几个参数有

  • object:对应的seurat对象,这里用的是pbmc示例数据
  • reduction:对tSNE使用哪种降维方法,一般默认是pca
  • dims:对应的PCA维度
  • dim.embed:生成的tSNE嵌入的维度空间(默认为2),也可以根据我们的需要设置对应的维度空间

降维结果也是存放在reductions里面

和PCA结果不同的是,TSNE降维的结果只有cell.embeddings里面是有数值的,储存着细胞的坐标信息,基于坐标信息可以进行可视化

二维可视化及美化

可以使用Dimplot简单可视化tsne的二维结果图

代码语言:javascript
复制
pbmc <- RunTSNE(pbmc,
                reduction = "pca",
                dims = 1:10,
                dim.embed = 2)
                
DimPlot(pbmc,label = T,reduction = 'tsne',pt.size =2)

在生信菜鸟团的#单细胞周更中,有一期就是对TSNE和UMAP图进行美化——tsne及umap图美化

使用ggplot2美化:

  • 提取tSNE二维坐标数据,以及细胞分群情况celltype
  • 计算二维坐标的中位数,作为细胞分群情况的标签坐标
  • 使用ggplot2绘制散点图
  • 使用stat_ellipse加置信区间
  • 使用geom_text加上标签信息
代码语言:javascript
复制
#提取坐标数据
tSNE=pbmc@reductions$tsne@cell.embeddings %>%
  as.data.frame() %>%
  cbind(celltype=pbmc@meta.data$celltype)

# 设置标签坐标
label <- tSNE %>%
  group_by(celltype)%>%
  summarise(tSNE_1 = median(tSNE_1), tSNE_2 = median(tSNE_2))

#使用ggplot2绘图
p <- ggplot(data = tSNE, aes(x = tSNE_1, y = tSNE_2)) +
  geom_point(aes(color = celltype),
             size = 2,
             alpha = 0.8)+
  stat_ellipse(aes(color = celltype),
               level = 0.95, linetype = 2, show.legend = F)+
  geom_text(data = label,
            aes(x = tSNE_1, y = tSNE_2, label = celltype),
            color = 'black', size = 5)

p

对比Dimplot直接绘图和使用ggplot简单调整之后的图:

当然还有更多的细节可以调整,Dimplot函数也有很多参数可以选择,后面我们再来探讨!

三维可视化

dim.embed参数可以调整TSNE的维度,所以我们可以保留三个维度来进行可视化

代码语言:javascript
复制
pbmc <- RunTSNE(pbmc,
                reduction = "pca",
                dims = 1:10,
                dim.embed = 3)

三维立体图可视化就可以用到scatterplot3d——Plots a three dimensional (3D) point cloud这个包

tSNE三维可视化步骤:

  • 提取tSNE三维坐标数据,以及细胞分群情况celltype
  • 选择合适的配图颜色
  • 使用scatterplot3d绘制三维图
  • 使用legend加上标签信息
代码语言:javascript
复制
#加载R包
library(dplyr)
library(scatterplot3d)

#指定数据和颜色
plot = tSNE_3d
class(plot)

color.bin <- c("#D9AB42","#A35E47","#0F4C3A","#563F2E","#78C2C4","#C73E3A","#B47157","#2B5F75")

plot <- plot %>% 
  mutate(ID=rownames(plot),
         Type=pbmc@meta.data$celltype,
         TypeColor=color.bin[as.numeric(as.factor(Type))])

#scatterplot3d绘制三维图
scatterplot3d(x = plot$tSNE_1, 
              y = plot$tSNE_2, 
              z = plot$tSNE_3,
              color = plot$TypeColor,
              pch = 16, cex.symbols = 1,
              scale.y = 0.7, angle = 45,
              xlab = "tSNE_1", ylab = "tSNE_2", zlab = "tSNE_3",
              main="3D Scatter Plot of tSNE",
              col.axis = "#444444", col.grid = "#CCCCCC")

#legend加上标签信息
legend("bottom", legend = levels(as.factor(plot$Type)),
       col =  color.bin,  pch = 16,
       inset = -0.25,xpd = TRUE, horiz = FALSE,ncol = 3)

TSNE对比PCA

从二维看起来,tsne和PCA的结果差异不算很大,但PCA结果中因为有feature.loding的基因信息,所以不同维度根据其相关性基因可以对细胞亚群进行区分

代码语言:javascript
复制
DimPlot(pbmc,label = T,reduction = 'pca')+DimPlot(pbmc,label = T,reduction = 'tsne',pt.size =2)

三维立体图看来,TSNE的降维后可视化的结果会更直观一些,相似的标签被聚类在一起

PCA

TSNE

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

本文分享自 单细胞天地 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前情提要
  • RunTSNE()及其参数
  • 二维可视化及美化
  • 三维可视化
  • TSNE对比PCA
相关产品与服务
灰盒安全测试
腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档