Generate Publication-Ready TDA Figures

VerifiedSafe

Scaffold matplotlib figure code for topological data analysis (TDA) following strict style, color, and dimension conventions for publication.

Sby Skills Guide Bot
DevelopmentIntermediate
007/30/2026
Claude Code
#tda#matplotlib#publication-figures#visualization

Recommended for

Our review

Generates matplotlib code for publication-ready TDA figures following the conventions of a specific codebase.

Strengths

  • Ensures stylistic consistency with predefined publication constants (size, DPI, colors).
  • Automates common figure types (persistence diagrams, null histograms, etc.).
  • Enforces standardized color rules and annotation practices for publications.

Limitations

  • Requires familiarity with the trajectory_tda codebase and its conventions.
  • Not flexible for non-standard figure layouts or domains outside TDA.
  • Temporary figures must be saved separately from production output, which can be confusing.
When to use it

Use this skill when you need to quickly produce publication-quality figures for a TDA paper while adhering to the trajectory_tda codebase conventions.

When not to use it

Avoid this skill when working on exploratory figures without style constraints or outside the TDA domain.

Security analysis

Safe
Quality score90/100

The skill provides declarative style and path guidance for generating matplotlib figure code. It does not instruct or invoke any execution of commands, network calls, file deletions, or unsafe operations. It only suggests code patterns and directory conventions.

No concerns found

Examples

Generate a persistence diagram figure
/tda-figure-spec persistence-diagram P01-B
Generate a null histogram figure
/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