Skip to content

nhra_gt.visualization.base

Classes

Plotter

Bases: Protocol

Protocol for standardized figure generation functions.

Source code in src/nhra_gt/visualization/base.py
@runtime_checkable
class Plotter(Protocol):
    """Protocol for standardized figure generation functions."""

    def __call__(
        self, data: pd.DataFrame, config: PlotConfig | None = None, **kwargs: Any
    ) -> Figure: ...

Functions

save_figure(fig, path, config=None, formats=None)

Saves a matplotlib figure in multiple formats defined by PlotConfig.

Parameters:

Name Type Description Default
fig Figure

The matplotlib Figure object.

required
path str | Path

File path (extension optional).

required
config PlotConfig | None

PlotConfig for DPI and other settings.

None
formats list[str] | None

List of formats (e.g. ['png', 'svg']). If None, uses config.format.

None
Source code in src/nhra_gt/visualization/base.py
def save_figure(
    fig: Figure,
    path: str | Path,
    config: PlotConfig | None = None,
    formats: list[str] | None = None,
) -> None:
    """
    Saves a matplotlib figure in multiple formats defined by PlotConfig.

    Args:
        fig: The matplotlib Figure object.
        path: File path (extension optional).
        config: PlotConfig for DPI and other settings.
        formats: List of formats (e.g. ['png', 'svg']). If None, uses config.format.
    """
    if config is None:
        config = PlotConfig()

    p = Path(path)
    p.parent.mkdir(parents=True, exist_ok=True)

    target_formats = formats or [config.format]

    for fmt in target_formats:
        out_path = p.with_suffix(f".{fmt}")
        fig.savefig(
            out_path,
            dpi=config.dpi,
            bbox_inches=config.bbox_inches,
            transparent=config.transparent,
        )
        logger.info(f"Figure saved to {out_path}")

    plt.close(fig)