单细胞等高线图
等高线指的是地形图上高程相等的相邻各点所连成的闭合曲线。把地面上海拔高度相同的点连成的闭合曲线,并垂直投影到一个水平面上,并按比例缩绘在图纸上,就得到等高线。 等高线也可以看作是不同海拔高度的水平面与实际地面的交线,所以等高线是闭合曲线。在等高线上标注的数字为该等高线的海拔。
流式等高线图
流式等高线图与流式散点图相似,一张流式等高线图也能同时显示两个通道的信息,所不同的是,它借助地理等高线图的形式。地理等高线图用封闭的环线代表海拔高度相同的地方,环线聚集越多,表示海拔高度变化越快,环线的中央区域表示海拔最高或者最低的区域。流式等高线图借助地理等高线图表示细胞的密集程度,流式等高线图的环线代表的是细胞密度相同的区域,所以,环线聚集越多的地方表示此区域细胞密度变化越快,细胞最稀疏的地方还是用散点表示,环线的中央区域代表细胞聚集的中心。
流式等高线图的意义和实际应用与流式散点图较为相似,可以看作是流式散点图的一个变体。相比之下,流式散点图更为直观,所以应用也更为广泛。当然,流式等高线图也有其自身的优点,它较能直观地体现细胞群的集中点,等密度环线的中央区域代表一个细胞群的集中点,一般代表一个细胞群,所以在某些情况下,流式等高线图比流式散点图更能直观地体现细胞的分群。
下图显示的是正常C57小鼠脾脏淋巴细胞分群的流式等高线图。
单细胞等高线图
其实单细胞数据也可利用等高线图来做展示,今天小编就来给大家演示一下。
我们利用这套经典的3k pbmc细胞样本来举例
#加载相关R包
library(Seurat)
library(ggplot2)
library(patchwork)
#加载pbmc3k这个seurat对象
pbmc=readRDS("pbmc3k_final.rds")
#绘制UMAP图
DimPlot(pbmc)
UMAP图如下:
接下来我们来用ggplot2这个包里面的geom_density_2d()来绘制等高线
首先需要先准备一下数据格式
#获取每个细胞UMAP的横纵坐标值
data=pbmc[["umap"]]@cell.embeddings
#转成数框
data <- as.data.frame(data)
#添加一列,细胞类型
data$cluster <- pbmc@active.ident
数据结构整理成这样
我们先来看一下第一种风格的单细胞等高线图
#横轴是UMAP_1,纵轴是UMAP_2,点的颜色根据cluster来设定
ggplot(data)+
geom_point(aes(x=UMAP_1, y=UMAP_2,color=cluster))+
geom_density_2d(aes(x=UMAP_1, y=UMAP_2))+ #绘制密度曲线,也就是等高线
theme_bw()+ #黑白背景
#避免等高线超出绘图区域,调节一下横轴和纵轴的范围
scale_x_continuous(limits=c(min(data$UMAP_1) - 0.1*diff(range(data$UMAP_1)),
max(data$UMAP_1) + 0.1*diff(range(data$UMAP_1))))+
scale_y_continuous(limits=c(min(data$UMAP_2) - 0.1*diff(range(data$UMAP_2)),
max(data$UMAP_2) + 0.1*diff(range(data$UMAP_2))))
效果如下:
第二种风格的单细胞等高线图
#横轴是UMAP_1,纵轴是UMAP_2,点的颜色都设置成空color=NA
ggplot(data)+
geom_point(aes(x=UMAP_1, y=UMAP_2),color=NA)+
geom_density_2d(aes(x=UMAP_1, y=UMAP_2))+
theme_bw()+
scale_x_continuous(limits=c(min(data$UMAP_1) - 0.1*diff(range(data$UMAP_1)),
max(data$UMAP_1) + 0.1*diff(range(data$UMAP_1))))+
scale_y_continuous(limits=c(min(data$UMAP_2) - 0.1*diff(range(data$UMAP_2)),
max(data$UMAP_2) + 0.1*diff(range(data$UMAP_2))))
效果如下:
最后我们把背景的网格线也删除
ggplot(data)+
geom_point(aes(x=UMAP_1, y=UMAP_2),color=NA)+
geom_density_2d(aes(x=UMAP_1, y=UMAP_2))+
theme_bw()+
#删除网格线
theme(panel.grid.major = element_blank(),
panel.grid.minor = element_blank())+
scale_x_continuous(limits=c(min(data$UMAP_1) - 0.1*diff(range(data$UMAP_1)),
max(data$UMAP_1) + 0.1*diff(range(data$UMAP_1))))+
scale_y_continuous(limits=c(min(data$UMAP_2) - 0.1*diff(range(data$UMAP_2)),
max(data$UMAP_2) + 0.1*diff(range(data$UMAP_2))))
效果如下:
相关文章
- 单细胞测序&空间转录组测序“强强联手”揭示肠道发育
- Annu. Rev. Immunol. |张泽民组综述单细胞技术解析肿瘤浸润免疫细胞新发现
- 单细胞分析揭示了ZNF683在多发性骨髓瘤的NK细胞耗竭中的关键作用
- 单细胞测序概述
- 整合单细胞数据和Bulk数据的多种方法(二):R包Scissor
- IMMUcan—肿瘤微环境单细胞数据库
- 单细胞转录组 | 多样本处理与Harmony整合
- [Nature Communications | 论文简读] 一种用于清理单细胞RNA-Seq数据噪音的深度神经网络模型
- [Nucleic Acids Research | 论文简读] 基于大规模数据整合的单细胞基因调控网络推理算法
- 单细胞系列教程:PCA和归一化理论(七)
- 单细胞转录组实战05: CellphoneDB细胞通讯及可视化
- 多个单细胞样本数据的循环读取
- 单细胞分析工具--Palantir轨迹分析
- 单细胞测序揭示 MDA5+ 皮肌炎的特有适应性免疫特征
- 单细胞转录组实战06: pySCENIC转录因子分析(可视化)