BioF3 FigCode · SCI 绘图代码集
Python 轨迹图(Scanpy PAGA)
分类:降维可视化 | 依赖包:scanpy、matplotlib
解决的生物学问题
我的 cluster 之间是否存在分化连接?哪些 cluster 是过渡态?
应用场景
- 造血/神经发育轨迹
- 免疫细胞分化连接
- 替代 monocle3 的 Python 流程
- scVelo 预测前的 PAGA 草图
输入数据格式
AnnData 对象(已跑 sc.tl.leiden)
关键参数
- groups = "leiden"(分组列)
- threshold(连接强度阈值,0-1)
- init_pos = "paga" 用 PAGA 初始化 UMAP
- plot = True 自动出图
快速开始
1. 直接在线运行
打开 FigCode 在线绘图,点击本工具卡片的"在线绘图"按钮即可用内置示例数据出图,零环境配置。
2. 本地复现
下载脚本和示例数据,本地 RStudio 运行:
# 下载
curl -O https://<your-site>/figcode/scripts/py-paga.R
curl -O https://<your-site>/figcode/data/py-paga.csv
3. 安装依赖
# CRAN 包
install.packages(c("scanpy", "matplotlib"))
# Bioconductor 包(如需)
# BiocManager::install(c())
完整代码
import scanpy as sc
import matplotlib.pyplot as plt
# --- Demo data ---
adata = sc.datasets.paul15()
sc.pp.recipe_zheng17(adata)
sc.tl.pca(adata, n_comps=20)
sc.pp.neighbors(adata, n_neighbors=15)
sc.tl.leiden(adata, resolution=0.6)
# --- PAGA ---
sc.tl.paga(adata, groups="leiden")
fig, axes = plt.subplots(1, 2, figsize=(14, 6))
# Panel 1: PAGA graph
sc.pl.paga(
adata, threshold=0.05,
color="leiden", title="PAGA graph",
fontsize=10, ax=axes[0], show=False
)
# Panel 2: PAGA-initialized UMAP
sc.tl.umap(adata, init_pos="paga")
sc.pl.umap(
adata, color="leiden",
title="UMAP (PAGA-initialized)",
legend_loc="on data", legend_fontsize=8,
ax=axes[1], show=False
)
plt.suptitle("PAGA Trajectory — Paul15 hematopoiesis", y=1.02)
plt.tight_layout()
plt.savefig("plot_001.png", dpi=150, bbox_inches="tight")
print(f"Clusters: {adata.obs['leiden'].nunique()}")
替换为自己的数据
脚本中以 # --- Demo data --- 标注的段落是示例数据生成代码。替换为自己的数据时,保持列名一致即可:
- 输入格式:AnnData 对象(已跑 sc.tl.leiden)
- 使用
read.csv()/readRDS()读取本地文件
延伸阅读
- 相关教程:Python 轨迹图 完整流程
- 出现 bug?欢迎在 FigCode 页面 点击对应卡片,在评论区留言。