Plotting (sjanpy.pl)

Embedding

sjanpy.pl.embedding.fancy_embedding_pro(adata, basis='umap', color='leiden', legend_title=None, title=None, palette='tab20', dot_size=12, alpha=0.8, show_density=True, show_labels=True, save_path=None, dpi=300, figsize=(10, 8))[source]

单细胞高质量绘图函数: 1. 支持自定义图例名称 (legend_title) 2. 强制 XY 轴等比例 (aspect=’equal’) 3. 同时保留图内标签与右侧图例 4. 自动处理分类与连续变量

Dot Plot

sjanpy.pl.dotplot.complex_dotplot(adata, genes, groupby, z_score=True, cluster_rows=True, cluster_cols=True, use_olo=True, manual_gene_order=None, manual_group_order=None, show_dendrogram_x=True, show_dendrogram_y=True, dendrogram_ratio=(0.12, 0.08), row_km=None, col_km=None, x_rotation=90, dot_scale=5, dot_spacing_ratio=(0.8, 0.5), frame_margin=1.2, legend_pos=(1.1, 0.8), colorbar_pos=(1.1, 0.2), colorbar_width='10%', colorbar_height='30%', legend_label_spacing=1.5, vmin=None, vmax=None, cmap='RdBu_r', title=None, save_path=None)[source]
sjanpy.pl.dotplot.get_dotplot_df(adata, genes, groupby, expr_threshold=0.0, min_pct=0, keep_genes=None)[source]

从 AnnData 提取数据,并过滤低表达基因,但保留指定的核心基因。

参数:

adata : AnnData genes : list

候选基因列表。

groupbystr

adata.obs 中的分组列名。

expr_thresholdfloat

全局最大平均表达量阈值。

min_pctfloat

全局最大表达占比阈值。

keep_geneslist, optional

白名单基因列表。即使达不到阈值,也强制保留。

sjanpy.pl.dotplot.fan_dotplot(df, start_deg=-60, end_deg=60, figsize=(14, 10), cmap='RdYlBu_r', grid_lw=0.8, grid_color='lightgray', title=None, save_path=None)[source]

绘制高度可定制的扇形 DotPlot

参数:

dfpd.DataFrame

包含 ‘Gene’, ‘Cluster’, ‘AvgExp’, ‘Pct’ 列

start_deg, end_degint

扇形的起始和结束角度(0度为正北/12点方向)

figsizetuple

画布尺寸

cmapstr

颜色映射方案,如 ‘viridis’, ‘magma’, ‘RdYlBu_r’, ‘plasma’ 等

grid_lwfloat

网格线的粗细 (linewidth)

grid_colorstr

网格线的颜色

titlestr, optional

图表标题

save_pathstr, optional

保存路径(支持自动创建文件夹)

Bar Plot

sjanpy.pl.barplot.plot_stacked_bar_repel(obs_df, group_col, type_col, mode='relative', log_scale=False, label_content='percentage', font_size=10, figsize=(12, 8), min_label_threshold=0.03, save_path=None)[source]

Volcano Plot

sjanpy.pl.volcano.plot_volcano(df, logfc_col='logfc', padj_col='pvals_adj', lfc_thr=1.0, adj_p_thr=0.05, title='Volcano Plot', figsize=(8, 6))[source]

使用 DataFrame 绘制火山图。

参数:

dfpd.DataFrame

包含差异分析结果的 DataFrame。

logfc_colstr

Log Fold Change 的列名。

padj_colstr

调整后 P 值的列名。

lfc_thrfloat

LogFC 的阈值(绝对值)。

adj_p_thrfloat

P 值的显著性阈值(通常为 0.05)。

sjanpy.pl.volcano.plot_cluster_deg_jitter_highlight(deg_df, cluster_key='cluster', target_name='FIRES', reference_name='CTRL', highlight_dict=None, vrange=(-10, 10), x_label_rotation=0, save_path=None, figsize=(12, 8))[source]

绘制带有基因标注的集群差异表达抖动图。

Nebulosa Density

sjanpy.pl.nebulosa.silverman_bandwidth(data)[source]

根据 Silverman 规则计算带宽: h = 0.9 * min(std, IQR/1.34) * n^(-1/5)

sjanpy.pl.nebulosa.wkde2d(x, y, w, adjust=1, n=100, lims=None)[source]

加权二维核密度估计(Weighted KDE)

参数:

x, y: 数据点的二维坐标(向量) w: 对应的权重(例如基因表达值) adjust: 带宽调整因子 n: 网格大小(在 x 与 y 方向上各取 n 个点) lims: [xmin, xmax, ymin, ymax],若为 None 则根据数据自动计算

返回:

gx, gy: 网格在 x 与 y 方向上的坐标数组 z: 得到的密度矩阵,大小为 (n, n)

sjanpy.pl.nebulosa.wkde3d(x, y, z, w, adjust=1, n=30, lims=None)[source]

加权三维核密度估计

参数:

x, y, z: 数据点的三维坐标(向量,长度 N) w: 对应的权重(例如基因表达值) adjust: 带宽调整因子 n: 网格数(每个维度上生成 n 个网格点) lims: [xmin, xmax, ymin, ymax, zmin, zmax];若为 None,则自动根据数据范围确定

返回:

gx, gy, gz: 三个方向上网格的坐标数组 Z: 得到的密度值三维数组,形状为 (n, n, n)

sjanpy.pl.nebulosa.nebulosa_density(adata, coord_key, gene, adjust=1, n=100, lims=None, cmap='viridis', show=False)[source]

在 AnnData 对象中,根据 obsm 中的二维坐标和基因表达值计算加权二维 KDE, 并绘制散点图(颜色表示密度值)。

参数:

adata: AnnData 对象 coord_key: 用于提取散点坐标的 obsm 键(例如 “X_umap”),要求形状为 (n_cells, 2) gene: 用于加权的基因名称(必须存在于 adata.var_names 中) adjust: 带宽调整因子(默认 1) n: 网格大小(默认 100) lims: [xmin, xmax, ymin, ymax],如果为 None,则自动计算数据范围 cmap: 绘图使用的颜色图(默认 ‘viridis’) show: 是否调用 plt.show() 显示图形(默认 False)

返回:

densities (ndarray) if show=False, else (fig, ax)