Generate Publication-Ready TDA Figures

VerifiedSafe

Scaffold matplotlib figure code following established trajectory_tda/viz conventions. Supports persistence diagrams, barcodes, null histograms, and landscape comparisons with publication-quality styling.

Sby Skills Guide Bot
Data & AIIntermediate
107/24/2026
Claude Code
#tda#matplotlib#publication-figures#data-visualization#topological-data-analysis

Recommended for

Our review

Generates publication-ready matplotlib figures for topological data analysis using predefined style constants and figure templates from the trajectory_tda library.

Strengths

  • Enforces consistent styling with PUBLICATION_RC and predefined figure sizes.
  • Provides templates for common TDA plots (persistence diagram, barcode, null histogram, landscape comparison).
  • Automates saving in both PDF and PNG formats.
  • Ensures correct color usage (STATE_COLORS, etc.).

Limitations

  • Only works within the trajectory_tda codebase; requires specific imports and constants.
  • Limited to the provided figure templates; generic matplotlib customization may be overridden.
  • Figure size and layout are fixed to specific constants, reducing flexibility for custom layouts.
When to use it

When creating publication-quality figures for topological data analysis papers that adhere to the trajectory_tda visualization conventions.

When not to use it

When you need fully customized matplotlib figures outside the provided templates or when working outside the trajectory_tda project.

Security analysis

Safe
Quality score92/100

No execution of arbitrary code, network calls, or shell commands. The skill only provides guidelines for generating matplotlib figures; it contains no destructive instructions and relies on internal codebase constants.

No concerns found

Examples

Persistence diagram for paper P01-B
/tda-figure-spec persistence-diagram P01-B
Null histogram for paper P01-A
/tda-figure-spec null-histogram P01-A
Interactive figure selection
/tda-figure-spec

/tda-figure-spec — Generate Publication-Ready TDA Figures

Scaffold matplotlib figure code following the established trajectory_tda/viz/ conventions. Uses PUBLICATION_RC, DPI, FIGSIZE_*, STATE_COLORS, and _save_figure from the codebase — never ad-hoc sizes or colours.

Usage

/tda-figure-spec [figure-type] [paper-number]

Example: /tda-figure-spec persistence-diagram P01-B Example: /tda-figure-spec null-histogram P01-A Example: /tda-figure-spec (interactive)


Style constants (always import from trajectory_tda/viz/constants.py)

from trajectory_tda.viz.constants import (
    DPI, FIGSIZE_FULL, FIGSIZE_WIDE, FIGSIZE_HALF, FIGSIZE_SQUARE,
    PUBLICATION_RC, STATE_COLORS, STATES, STATE_LABELS, REGIME_LABELS,
)
import matplotlib.pyplot as plt
plt.rcParams.update(PUBLICATION_RC)

Figure size guide

| Use case | Constant | Size | |---|---|---| | Single full-width plot | FIGSIZE_FULL | 190mm × 120mm | | Wide two-panel | FIGSIZE_WIDE | 190mm × 104mm | | Half-width single panel | FIGSIZE_HALF | 90mm × 120mm | | Square heatmap | FIGSIZE_SQUARE | 90mm × 90mm |

Save function (always use this pattern)

def _save_figure(fig, output_dir: Path, name: str) -> None:
    output_dir.mkdir(parents=True, exist_ok=True)
    fig.savefig(output_dir / f"{name}.pdf", format="pdf")
    fig.savefig(output_dir / f"{name}.png", format="png", dpi=DPI)

Colour rules

  • State space: always STATE_COLORS dict — never tab10 or default cycle
  • Observations: #2d6a2e (green); Null: steelblue; Dim 0: green; Dim 1: #1a237e
  • Regimes: plt.cm.tab10 with REGIME_LABELS order
  • Sequential/diverging: viridis, plasma, RdBu_rnever jet

Annotation standards

  • p-values: write p=0.003, not p<0.01
  • Axes: remove top and right spines; keep bottom and left
  • Legends: frameon=False
  • Subplot labels: ax.text(0.02, 0.97, "(a)", transform=ax.transAxes, ...)

Figure templates available

| Template | When to use | |---|---| | plot_persistence_diagram(diagram, dim, ax) | Scatter birth-death pairs | | plot_barcode(diagram, dim, ax) | Feature lifetimes sorted by persistence | | plot_null_histogram(observed, null_dist, p_value, dim, ax) | Permutation test result | | plot_landscape_comparison(obs, null, grid, ax) | L² landscape distance (mandatory) |


Output paths

| Context | Path | Naming | |---|---|---| | Production paper figure | papers/PXX/figures/ | fig{N}_{desc}.{pdf\|png} | | Supplement | papers/PXX/figures/ | figS{N}_{desc}.{pdf\|png} | | Working / exploratory | figures/{domain}/ | YYYYMMDD_{desc}.png |

Working figures must not be saved to papers/PXX/figures/ — that is for production only.

Related skills