Monocle3-密度图展示celltype随拟时分布

学术   2024-10-14 10:35   重庆  

偷偷问一下,关注了吗

内容获取


1、购买打包合集(《KS科研分享与服务》付费内容打包集合),价格感人,可以加入微信VIP群(答疑交流群,甚至有小伙伴觉得群比代码更好),可以获取建号以来所有内容,群成员专享视频教程,提前更新,其他更多福利!


2、《KS科研分享与服务》公众号有QQ群,进入门槛是20元(完全是为了防止白嫖党,请理解),请考虑清楚。群里有免费推文的注释代码和示例数据(终身拥有),没有付费内容,群成员福利是购买单个付费内容半价!


需要者详情请联系作者(非需要者勿扰,处理太费时间):


在文章中经常经常看到Monocle2展示celltype在拟时轴上的分布,使用密度图(ggplot修饰monocle2拟时热图:一众问题全部解决)。就有小伙伴提出问题了,monocle3我也想这样展示,当然是可以的!做好密度图与拟时热图结合拼接,不失为一种好办法,可以清楚的表示celltype在拟时中的位置:本文注释代码已发布微信VIP群,请自行下载monocle3相关分析示例数据和可视化参考((视频教程): Monocle3分析流程-分析简化函数和可视化函数)。

接下来我们看看具体的示例。首先做一个分析示例:已经定好拟时起点。
library(ggplot2)library(monocle3)source('./ks_run_monocle3.R')
#monocle3 analysis#运行monocle3分析0参照monocle3视频教程cds_data <- ks_run_monocle3(object=cytotrace2_sce, idents="cluster", use_partition=F, learn_graph_control=list(minimal_branch_len=9.5,euclidean_distance_ratio=1), define_root=T, know_root=T, root_state="YSMP")

#plot-拟时基本作图plot_cells(cds_data, label_cell_groups = F, color_cells_by = "pseudotime", label_branch_points = F, label_roots =F, label_leaves =F, graph_label_size = 0, cell_size=2, trajectory_graph_color='black', trajectory_graph_segment_size = 2)

提取拟时与celltype结果:
pseudotime <- pseudotime(cds_data) %>% as.data.frame()pseudotime$cell <- rownames(pseudotime)colnames(pseudotime)[1] <- "peu"
celltype <- cds_data@clusters$UMAP %>% as.data.frame()celltype$cell <- rownames(celltype)
merge <-merge(pseudotime, celltype, by = 'cell')merge <- merge[order(merge$peu), ]
密度图:
p=ggplot(merge,aes(peu,fill=clusters, color=clusters)) +    geom_density(alpha = 0.5,size=1.2)+  scale_fill_manual(values=c("#3F6F76", "#C65840", "#F4CE4B", "#62496F"))+  #设置颜色   scale_color_manual(values=c("#3F6F76", "#C65840", "#F4CE4B", "#62496F"))+    theme_classic()+ #我这里不展示坐标轴信息,可自行设置  scale_y_continuous(expand = c(0,0))+  theme(axis.line = element_blank(),        axis.ticks.y=element_blank(),        axis.title = element_blank(),        axis.text.y = element_blank(),        axis.text.x=element_text(colour='black',size=10))+  labs(title = "Pseudotime")p

可以看到,我们这个情况是因为YSMP处于拟时起点,所以导致起点密度很高,作图很突出,后面的都看不到了,所以将y周截断展示:这样效果就可以了!看起来比较清晰。
p+scale_y_break(c(1, 2),                scales = c(0.5,2),                expand=expansion(add = c(0, 0)),                space = 0.2)

当然这个图可以使用AI与拟时热图结合起来展示更加完美:
###或者加一个热图,使用AI将两者结合起来即可source('./ks_monocle3_heatmap.R')#label gene# genes <- c("C1QB","C1QC","C1QA","MRC1","LGMN","MS4A7","MAF","FOLR2",#            "HLA-DPA1","CLEC10A","IL10RA","CD163","KCTD12","CLEC7A","MS4A6A","CD14",#            "ITM2A","CYTL1","MDK","SELP","CD24",#            "S100A8","S100A9","S100A12")# # ht2 = ks_monocle3_heatmap(cds = cds_data,#                           graph_gene = plot_genes,#                           celltype_color = c("#E69253", "#EDB931", "#E4502E", "#4f372d"),#                           cluster_color =c("#8f657d", "#42819F", "#86AA7D", "#CBB396"),#                           num_clusters=4,#                           labels = T,#                           label_genes = genes)

密度图可以分开展示:
ggplot(merge, aes(x=peu,y=clusters,fill=clusters))+  geom_density_ridges(scale=1) +  scale_y_discrete(position = 'right')+  theme_minimal()+  theme(panel.grid = element_blank(),        axis.title = element_blank(),        axis.text = element_text(colour = 'black', size=8))+  scale_x_continuous(position = 'top')+  scale_fill_manual(values=c("#3F6F76", "#C65840", "#F4CE4B", "#62496F"))

这样就完成了。希望对你有用!

觉得我们分享有些用的,点个赞再走呗!

关注我们获取精彩内容:


关注不迷路:扫描下面二维码关注公众号!
B站视频号链接https://space.bilibili.com/471040659?spm_id_from=333.1007.0.0




关注 KS科研分享与服务,

认清正版优质内容和服务!

优质内容持续输出,物超所值!

合作联系:ks_account@163.com

新的板块-重要通知-双向选择

KS科研分享与服务
科研学习交流于分享,生信学习笔记,科研经历和生活!
 最新文章