首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >CytoTRACE2可视化进阶(修改坐标维持umap图前后一致)

CytoTRACE2可视化进阶(修改坐标维持umap图前后一致)

原创
作者头像
凑齐六个字吧
发布2024-09-19 00:28:15
发布2024-09-19 00:28:15
6734
举报
文章被收录于专栏:单细胞单细胞

上一期推文已经简单说明了CytoTRACE2的分析流程、注意事项和可视化。

CytoTRACE2单细胞分化潜力预测工具学习:https://mp.weixin.qq.com/s/inF9iGy2X9D2CZLzQBtRdw

有小伙伴观察到使用CytoTRACE2之后的图形会与原始的umap图有些许的不同,虽然在实际应用的时候这种情况是无伤大雅的。

但既然提出了问题,笔者就尝试着去解决一下~

步骤流程
1、导入
代码语言:javascript
复制
rm(list=ls())
library(tidyverse)
library(CytoTRACE2) 
library(Seurat)
library(paletteer)
library(BiocParallel)
register(MulticoreParam(workers = 4, progressbar = TRUE))

load("scRNA.Rdata")
sub_dat <- subset(scRNA, subset = celltype %in% c("CD8+ T-cells", "CD4+ T-cells"))
DimPlot(sub_dat,label = T)
2、提取数据/运行CytoTRACE2
代码语言:javascript
复制
# 提取表达矩阵信息
expression_data <- GetAssayData(sub_dat,layer = "counts")

# 运行CytoTRACE2
cytotrace2_result <- cytotrace2(expression_data,species = 'human')

# 提取注释信息
annotation <- data.frame(phenotype = sub_dat@meta.data$celltype) %>% 
  set_rownames(., colnames(sub_dat))

# 使用plotData函数生成预测和表型关联图
plots <- plotData(cytotrace2_result = cytotrace2_result, 
                  annotation = annotation,
                  expression_data = expression_data
)
3、坐标修改
代码语言:javascript
复制
umap_raw <- as.data.frame(sub_dat@reductions$umap@cell.embeddings) # 为后面修改坐标有用
# 创建一个包含所有需要更新的 plot 名称的向量
plot_names <- c("CytoTRACE2_UMAP", "CytoTRACE2_Potency_UMAP", 
                "CytoTRACE2_Relative_UMAP", "Phenotype_UMAP" 
)
# 循环遍历每个plot并更新坐标
for (plot_name in plot_names) {
  if (!is.null(plots[[plot_name]][[1]]$data)) {
    plots[[plot_name]][[1]]$data$umap_1 <- umap_raw$umap_1
    plots[[plot_name]][[1]]$data$umap_2 <- umap_raw$umap_2
  }
}

# 了解数据类型
class(plots$CytoTRACE2_UMAP[[1]]) 
# [1] "gg"     "ggplot"
class(plots$CytoTRACE2_Potency_UMAP[[1]]) 
# [1] "gg"     "ggplot"
class(plots$CytoTRACE2_Relative_UMAP[[1]]) 
# [1] "gg"     "ggplot"
class(plots$Phenotype_UMAP[[1]])
# [1] "gg"     "ggplot"

# 确认umap的数据范围
x_limits <- range(umap_raw$umap_1, na.rm = TRUE)
y_limits <- range(umap_raw$umap_2, na.rm = TRUE)

# 导出图片
plots$CytoTRACE2_UMAP[[1]] <- plots$CytoTRACE2_UMAP[[1]] + 
  scale_x_continuous(limits = x_limits) + 
  scale_y_continuous(limits = y_limits)
plots$CytoTRACE2_UMAP

plots$CytoTRACE2_Potency_UMAP[[1]] <- plots$CytoTRACE2_Potency_UMAP[[1]] + 
  coord_cartesian(xlim = x_limits, ylim = y_limits)
plots$CytoTRACE2_Potency_UMAP

plots$CytoTRACE2_Relative_UMAP[[1]] <- plots$CytoTRACE2_Relative_UMAP[[1]] + 
  coord_cartesian(xlim = x_limits, ylim = y_limits)
plots$CytoTRACE2_Relative_UMAP

plots$Phenotype_UMAP[[1]] <- plots$Phenotype_UMAP[[1]] + 
  coord_cartesian(xlim = x_limits, ylim = y_limits)
plots$Phenotype_UMAP

library(patchwork)
# 拼接为2x2布局
combined_plot <- (p1[[1]] | p2[[1]]) / (p3[[1]] | p4[[1]])
# 显示拼接后的图形
combined_plot
ggsave("combined_plot.png", plot = combined_plot, width = 10, height = 10)

对比之前的结果,是不是新的很棒~

但是笔者不明白的是每次图片导出的时候需要调试下面的两种缩放坐标轴的代码,如果自行使用的时候遇到图片显示不全的情况,就用另一种试一试

第一种:

coord_cartesian(xlim = x_limits, ylim = y_limits)

第二种:

scale_x_continuous(limits = x_limits) + scale_y_continuous(limits = y_limits)

:若对内容有疑惑或者有发现明确错误的朋友,请联系后台(欢迎交流)。更多内容可关注公众号:生信方舟

- END -

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 步骤流程
    • 1、导入
    • 2、提取数据/运行CytoTRACE2
    • 3、坐标修改
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档