单细胞分析: Scanpy 核心绘图 (3)

简介: 单细胞分析: Scanpy 核心绘图 (3)

引言

本系列讲解 使用 Scanpy 分析单细胞(scRNA-seq)数据 教程,持续更新,欢迎关注,转发!

Combining plots in subplots

一个坐标轴(axis)可以传递给绘图函数,从而把多个输出合并到同一个图中,如下例所示。

import matplotlib.pyplot as plt

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(20, 4), gridspec_kw={
   "wspace": 0.9})

ax1_dict = sc.pl.dotplot(
    pbmc, marker_genes_dict, groupby="bulk_labels", ax=ax1, show=False
)
ax2_dict = sc.pl.stacked_violin(
    pbmc, marker_genes_dict, groupby="bulk_labels", ax=ax2, show=False
)
ax3_dict = sc.pl.matrixplot(
    pbmc, marker_genes_dict, groupby="bulk_labels", ax=ax3, show=False, cmap="viridis"
)

Heatmaps

Heatmaps 不会像前面的图那样把细胞合并。相反,每个细胞分别显示为一行(如果 swap_axes=True,则为一列)。可以添加 groupby 信息,并使用与 sc.pl.umap 或其他嵌入图相同的色码来表示。

ax = sc.pl.heatmap(
    pbmc, marker_genes_dict, groupby="clusters", cmap="viridis", dendrogram=True
)

Heatmap 也可以在经过缩放的数据上绘制。在下一幅图中,与之前的 matrixplot 类似,最小值和最大值被调整,并使用了发散型色图。

ax = sc.pl.heatmap(
    pbmc,
    marker_genes_dict,
    groupby="clusters",
    layer="scaled",
    vmin=-2,
    vmax=2,
    cmap="RdBu_r",
    dendrogram=True,
    swap_axes=True,
    figsize=(11, 4),
)

Tracksplot

Track plot 显示的信息与 heatmap 相同,不同的是用高度而不是色阶来表示基因表达量。

ax = sc.pl.tracksplot(pbmc, marker_genes_dict, groupby="clusters", dendrogram=True)

Visualization of marker genes

与之前用已知基因标记来刻画细胞簇不同,我们可以找出在细胞簇或组别中差异表达的基因。

为了识别差异表达基因,我们运行 sc.tl.rank_genes_groups。该函数会依次取每一组细胞,将该组内每个基因的分布与该组外所有细胞的分布进行比较。这里,我们将使用 10x 提供的原始细胞标签,为这些细胞类型找出标记基因。

sc.tl.rank_genes_groups(pbmc, groupby="clusters", method="wilcoxon")

Visualize marker genes using dotplot

dotplot 可视化有助于快速浏览差异表达基因。为了让结果更紧凑,我们设置 n_genes=4,仅展示得分最高的 4 个基因。

sc.pl.rank_genes_groups_dotplot(pbmc, n_genes=4)

为了获得更好的展示效果,我们可以绘制 log fold changes 而非基因表达量。同时,我们希望只关注在某一细胞类型与其余细胞之间 log fold change ≥ 3 的基因。

此时,我们将参数 values_to_plot 设为 'logfoldchanges',并将 min_logfoldchange 设为 3。

由于 log fold change 是一个发散型尺度,我们同样调整了待绘制的最小值与最大值,并使用发散型色图。请注意,在随后的图中,要区分不同的 T-cell 群体相当困难。

sc.pl.rank_genes_groups_dotplot(
    pbmc,
    n_genes=4,
    values_to_plot="logfoldchanges",
    min_logfoldchange=3,
    vmax=7,
    vmin=-7,
    cmap="bwr",
)

Focusing on particular groups

接下来,我们使用 dotplot 仅聚焦在两个组别上(violin、heatmap 和 matrixplot 同样支持 groups 选项)。在此,我们将 n_genes 设为 30,因为此时它会展示所有满足 min_logfoldchange=4 的基因,最多到 30 个。

sc.pl.rank_genes_groups_dotplot(
    pbmc,
    n_genes=30,
    values_to_plot="logfoldchanges",
    min_logfoldchange=4,
    vmax=7,
    vmin=-7,
    cmap="bwr",
    groups=["3", "7"],
)

Visualize marker genes using matrixplot

在随后的图中,我们使用先前计算好的 ‘scaled’ 值(存储在 layer scaled 中)并采用一条发散型色图。

sc.pl.rank_genes_groups_matrixplot(
    pbmc, n_genes=3, use_raw=False, vmin=-3, vmax=3, cmap="bwr", layer="scaled"
)

Visualize marker genes using stacked violin plots

sc.pl.rank_genes_groups_stacked_violin(pbmc, n_genes=3, cmap="viridis_r")

Visualize marker genes using heatmap

sc.pl.rank_genes_groups_heatmap(
    pbmc,
    n_genes=3,
    use_raw=False,
    swap_axes=True,
    vmin=-3,
    vmax=3,
    cmap="bwr",
    layer="scaled",
    figsize=(10, 7),
    show=False,
);

每类展示 10 个基因,关闭基因标签,并交换坐标轴。请注意,当图像交换后,类别会以颜色代码显示,而不再使用 ‘brackets’。

sc.pl.rank_genes_groups_heatmap(
    pbmc,
    n_genes=10,
    use_raw=False,
    swap_axes=True,
    show_gene_labels=False,
    vmin=-3,
    vmax=3,
    cmap="bwr",
)

Visualize marker genes using tracksplot

sc.pl.rank_genes_groups_tracksplot(pbmc, n_genes=3)

Comparison of marker genes using split violin plots

在 scanpy 里,只需一行命令,就能用“对半开”的小提琴图一次性把所有组的标记基因并排比较。

with rc_context({
   "figure.figsize": (9, 1.5)}):
    sc.pl.rank_genes_groups_violin(pbmc, n_genes=20, jitter=False)

Dendrogram options

大多数可视化都能通过 dendrogram 来排列类别。然而,dendrogram 也可以单独绘制,如下所示:

# compute hierarchical clustering using PCs (several distance metrics and linkage methods are available).
sc.tl.dendrogram(pbmc, "bulk_labels")

ax = sc.pl.dendrogram(pbmc, "bulk_labels")

Plot correlation

与 dendrogram 一起,还可以绘制类别间的相关性(默认使用 ‘pearson’ 相关系数)。

ax = sc.pl.correlation_matrix(pbmc, "bulk_labels", figsize=(5, 3.5))

相关文章
|
5月前
|
存储 数据可视化 数据挖掘
单细胞分析: Scanpy 核心绘图 (1)
单细胞分析: Scanpy 核心绘图 (1)
|
2月前
|
数据可视化 数据挖掘
空间转录组: DLPFC数据集分析 (3)
空间转录组: DLPFC数据集分析 (3)
179 83
空间转录组: DLPFC数据集分析 (3)
|
4月前
|
算法 数据可视化 数据挖掘
空间转录组: 降维聚类+差异分析
空间转录组: 降维聚类+差异分析
空间转录组: 降维聚类+差异分析
|
5月前
|
存储 数据可视化 数据挖掘
单细胞分析: Scanpy 核心绘图 (2)
单细胞分析: Scanpy 核心绘图 (2)
单细胞分析: Scanpy 核心绘图 (2)
|
6月前
|
机器学习/深度学习 数据可视化 Python
Scanpy 分析 3k PBMCs:寻找 marker 基因
Scanpy 分析 3k PBMCs:寻找 marker 基因
Scanpy 分析 3k PBMCs:寻找 marker 基因
|
4月前
Scanpy 单细胞分析:Pearson残差处理计数数据
Scanpy 单细胞分析:Pearson残差处理计数数据
|
6月前
|
存储 JSON 前端开发
菜鸟之路Day39一一登录
本文介绍了登录功能的实现及其相关技术细节,包括会话管理、令牌认证和异常处理等内容。作者通过 Java 实现了一个基于用户名和密码的登录接口,调用服务层和数据库层完成用户验证。同时,文章深入探讨了三种会话跟踪技术:Cookie、Session 和 JWT 令牌。 在 JWT 部分,详细讲解了其生成与校验流程,实现了登录成功后返回 JWT 令牌的功能。此外,文章还介绍了过滤器(Filter)和拦截器(Interceptor)的概念及应用,演示了如何利用它们实现登录校验。 最后,为解决前后端交互中异常响应不统一的问题,定义了一个全局异常处理器 将系统异常以统一的 JSON 格式返回给前端。
189 0
|
9月前
|
数据处理
CUT&Tag 数据处理和分析教程(2)
CUT&Tag 数据处理和分析教程(2)
CUT&Tag 数据处理和分析教程(2)
|
10月前
|
数据采集 数据挖掘
RNA-seq 差异分析的细节详解 (7)
RNA-seq 差异分析的细节详解 (7)
RNA-seq 差异分析的细节详解 (7)
|
9月前
|
数据挖掘
R中单细胞RNA-seq分析教程 (11)
R中单细胞RNA-seq分析教程 (11)
R中单细胞RNA-seq分析教程 (11)