其他
优雅的可视化细胞群 Marker 基因
祝学子金榜题名
1引言
FindAllMarkers 函数来寻找每个细胞 cluster 的特异性基因,我们可以对每个 cluster 的基因绘制类似于 volcalno 的图。类似于下面这篇 NC 里的展现方式:
参考 生信技能树 的推文 两个不同单细胞亚群差异分析,合并一定要做火山图 。我们可以拓展一下,用这样的图来展示每个细胞类群的 Marker 基因。
2加载所需 R 包
library(Seurat)
library(ggplot2)
library(ggsci)
library(ggrepel)
library(tidyverse)
library(SeuratData)
library(pbmc3k.SeuratData)
3加载内置单细胞测试数据
这是已经处理好的单细胞数据:
# load data
pbmc3k <- LoadData("pbmc3k", type = "pbmc3k.final")
pbmc3k <- UpdateSeuratObject(object = pbmc3k)
pbmc3k
# An object of class Seurat
# 13714 features across 2638 samples within 1 assay
# Active assay: RNA (13714 features, 2000 variable features)
# 2 dimensional reductions calculated: pca, umap
差异分析:
这里 logfc.threshold 设置为 0 :
# find markers
pbmc.markers <- FindAllMarkers(pbmc3k, only.pos = FALSE,
min.pct = 0.25,
logfc.threshold = 0)
# Calculating cluster Naive CD4 T
# |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=04s
# cluster markers numbers
table(pbmc.markers$cluster)
# Naive CD4 T Memory CD4 T CD14+ Mono B CD8 T FCGR3A+ Mono
# 617 533 764 540 367 1035
# NK DC Platelet
# 579 1060 426
# check
head(pbmc.markers,3)
# p_val avg_log2FC pct.1 pct.2 p_val_adj cluster gene
# RPS12 2.008629e-140 0.7256738 1.000 0.991 2.754633e-136 Naive CD4 T RPS12
# RPS27 2.624075e-140 0.7242847 0.999 0.992 3.598656e-136 Naive CD4 T RPS27
# RPS6 1.280169e-138 0.6742630 1.000 0.995 1.755623e-134 Naive CD4 T RPS6
4绘图
筛选前五和后 5 的基因作为展示:
# top 5 genes
top5pos <- pbmc.markers %>% group_by(cluster) %>% top_n(n = 5, wt = avg_log2FC)
top5negtive <- pbmc.markers %>% group_by(cluster) %>% top_n(n = -5, wt = avg_log2FC)
# merge
top10 <- rbind(top5pos,top5negtive)
绘图:
# plot
ggplot(pbmc.markers,
aes(x = pct.1 - pct.2,y = avg_log2FC)) +
geom_point(color = 'grey80') +
# 添加水平线
geom_hline(yintercept = c(-0.25,0.25),lty = 'dashed',size = 1,color = 'grey50') +
# 添加 top5pos 基因标签
geom_text_repel(data = top5pos,
aes(x = pct.2 - pct.1,y = avg_log2FC,
label = gene,color = cluster),
show.legend = F,direction = 'y',
hjust = 1, # 右对齐
nudge_y = 0.25, # 文字竖直方向调整
force = 5, # 文字重叠调整
# 文字靠右竖直对齐
nudge_x = 0.8 - (top5pos$pct.2 - top5pos$pct.1)) +
# 添加 top5negtive 基因标签
geom_text_repel(data = top5negtive,
aes(x = pct.1 - pct.2,y = avg_log2FC,
label = gene,color = cluster),
show.legend = F,direction = 'y',
hjust = 0, # 左对齐
force = 2.5, # 文字重叠调整
# 文字靠左竖直对齐
nudge_x = -0.8 - (top5negtive$pct.2 - top5negtive$pct.1)) +
# top10 点颜色
geom_point(data = top10,show.legend = F,
aes(x = pct.1 - pct.2,y = avg_log2FC,color = cluster)) +
scale_color_npg(name = '') +
# x y breaks label
scale_y_continuous(limits = c(-6,10),breaks = seq(-6,10,2)) +
scale_x_continuous(limits = c(-1,1),breaks = seq(-1,1,0.5)) +
theme_bw(base_size = 14) +
# 主题调整
theme(panel.grid = element_blank(),
axis.text.x = element_text(angle = 45,hjust = 1),
strip.background = element_rect(color = NA,fill = 'grey90')) +
# 轴标签
xlab(expression(Delta~'Percentage Diffrence')) +
ylab('Log2-Fold Change') +
# 分面
facet_wrap(~cluster,nrow = 1,scales = 'fixed')
5结尾
上图的横坐标是两个组基因占细胞百分比的差值。下面是文章的图例:
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
(微信交流群满200人后需收取20元入群费用), 数据代码已上传至QQ群,欢迎加入下载。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀Molecular Cell 文章 ribosome pausing 结果复现 (终)
◀Molecular Cell 文章 ribosome pausing 结果复现 (四)
◀Molecular Cell 文章 ribosome pausing 结果复现 (三)
◀Molecular Cell 文章 ribosome pausing 结果复现 (二) (PCR 去重)
◀Molecular Cell 文章 ribosome pausing 结果复现 (一)
◀...