OmicVerse visualization for bulk, color systems, and single-cell data
Overview
Leverage this skill when a user wants help recreating or adapting plots from the OmicVerse plotting tutorials:
It covers how to configure OmicVerse's plotting style, choose colors from the Forbidden City palette, and generate bulk as well as single-cell specific figures.
Instructions
- •Set up the plotting environment
- •Import
omicverse as ov,matplotlib.pyplot as plt, and other libraries required by the user's request (pandas,seaborn,scanpy, etc.). - •Call
ov.ov_plot_set()(orov.plot_set()depending on the installed version) to apply OmicVerse's default styling before generating figures. - •Load example data via
ov.read(...)/ov.pp.preprocess(...)or instruct users to supply their own AnnData/CSV files.
- •Import
- •Bulk RNA-seq visuals (
t_visualize_bulk)- •Use
ov.pl.venn(sets=..., palette=...)to display overlaps among DEG lists (no more than 4 groups). Encourage settingsetsas a dictionary of set names → gene lists. - •For volcano plots, load the DEG table (
result = ov.read('...csv')) and callov.pl.volcano(result, pval_name='qvalue', fc_name='log2FoldChange', ...). Explain optional keyword arguments such assig_pvalue,sig_fc,palette, and label formatting. - •To compare group distributions with box plots, gather long-form data (e.g., from
seaborn.load_dataset('tips')) and invokeov.pl.boxplot(data, x_value=..., y_value=..., hue=..., ax=ax, palette=...). Mention how to adjust figure size, legend placement, and significance annotations.
- •Use
- •Color management (
t_visualize_colorsystem)- •Introduce the color book via
fb = ov.pl.ForbiddenCity()and demonstratefb.get_color(name='凝夜紫')for specific hues. - •Show how to pull predefined palettes (
ov.pl.green_color,ov.pl.red_color, etc.) and build dicts mapping cell types/groups to color hex codes. - •For segmented gradients, combine colors and call
ov.pl.get_cmap_seg(colors, name='custom'), then pass the colormap into Matplotlib/Scanpy plotting functions. - •Highlight using these palettes in embeddings:
ov.pl.embedding(adata, basis='X_umap', color='clusters', palette=color_dict, ax=ax).
- •Introduce the color book via
- •Single-cell visualizations (
t_visualize_single)- •Remind users to preprocess AnnData if needed (
adata = ov.pp.preprocess(adata, mode='shiftlog|pearson', n_HVGs=2000)). - •IMPORTANT - Data validation: Before plotting, always verify that required data exists:
python
# Before plotting by clustering or other categorical variable color_col = 'leiden' # or 'clusters', 'celltype', etc. if color_col not in adata.obs.columns: raise ValueError(f"Column '{color_col}' not found in adata.obs. Available columns: {list(adata.obs.columns)}") # Before plotting embeddings basis = 'X_umap' # or 'X_pca', 'X_tsne', etc. if basis not in adata.obsm.keys(): raise ValueError(f"Embedding '{basis}' not found in adata.obsm. Available embeddings: {list(adata.obsm.keys())}") - •For palette optimization, use
ov.pl.optim_palette(adata, basis='X_umap', colors='clusters')to auto-generate color schemes when categories clash. - •Reproduce stacked proportions with
ov.pl.cellproportion(adata, groupby='clusters', celltype_clusters='celltype', ax=ax)and transform into stacked area charts by settingkind='area'. - •Showcase compound embedding utilities:
- •
ov.pl.embedding_celltypeto place counts/proportions alongside UMAPs. - •
ov.pl.ConvexHullorov.pl.contourfor highlighting regions of interest. - •
ov.pl.embedding_adjustto reposition legends automatically. - •
ov.pl.embedding_densityfor density overlays, controlling smoothness withadjust.
- •
- •For spatial gene density, describe the workflow:
ov.pl.calculate_gene_density(adata, genes=[...], basis='spatial'), then overlay withov.pl.embedding(..., layer='gene_density', cmap='...'). - •Cover additional charts like
ov.pl.single_group_boxplot,ov.pl.bardotplot,ov.pl.dotplot, andov.pl.marker_heatmap, emphasizing input formats (long-form DataFrame vs. AnnData with.obsannotations) and optional helpers such asov.pl.add_paluefor manual p-value annotations.
- •Remind users to preprocess AnnData if needed (
- •Finishing touches and exports
- •Encourage adding titles, axis labels, and
fig.tight_layout()to prevent clipping. - •Suggest saving figures with
fig.savefig('plot.png', dpi=300, bbox_inches='tight')and documenting color mappings for reproducibility. - •Troubleshoot common issues:
- •Missing AnnData keys: Always validate
adata.obscolumns andadata.obsmembeddings exist before plotting - •Palette names not found: Verify color dictionaries match actual category values
- •Matplotlib font rendering: When using Chinese characters, ensure appropriate fonts are installed
- •"Could not find X in adata.obs": Check that clustering or annotation has been performed before trying to visualize results. Use defensive checks to compute missing prerequisites on-the-fly.
- •Missing AnnData keys: Always validate
- •Encourage adding titles, axis labels, and
Examples
- •"Plot a three-set Venn diagram of overlapping DEG lists and reuse Forbidden City colors for consistency."
- •"Load the dentate gyrus AnnData, color clusters with
fb.get_colorselections, and render an embedding with adjusted legend placement." - •"Generate single-cell proportion bar/area plots plus gene-density overlays using OmicVerse helper functions."
References
- •Bulk tutorial:
t_visualize_bulk.ipynb - •Color system tutorial:
t_visualize_colorsystem.ipynb - •Single-cell tutorial:
t_visualize_single.ipynb - •Quick reference snippets:
reference.md