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
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)。
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)