Source code for dartwork_mpl.helpers.io
"""Figure creation and I/O utilities for dartwork-mpl agents.
This module provides functions for creating and saving figures
with consistent settings.
"""
from __future__ import annotations
from pathlib import Path
import matplotlib.pyplot as plt
from matplotlib.figure import Figure
import dartwork_mpl as dm
[docs]
def save_figure(
fig: Figure,
filename: str | Path,
formats: tuple[str, ...] = ("png",),
dpi: int = 300,
create_dir: bool = True,
verbose: bool = True,
) -> None:
"""Save figure with consistent settings.
Parameters
----------
fig : Figure
Matplotlib figure
filename : str | Path
Output filename (without extension)
formats : tuple[str, ...]
Output formats
dpi : int
Resolution for raster formats
create_dir : bool
Whether to create output directory if missing
verbose : bool
Whether to print confirmation
Examples
--------
>>> save_figure(fig, "output/chart", formats=("png", "svg"))
"""
path = Path(filename)
if create_dir:
path.parent.mkdir(parents=True, exist_ok=True)
# Save in all formats
dm.save_formats(fig, str(path), formats=formats, dpi=dpi)
if verbose:
for fmt in formats:
print(f"✓ Saved: {path.stem}.{fmt}")
[docs]
def create_figure_with_style(
style: str = "report-kr",
figsize: tuple[float, float] | None = None,
dpi: int = 200,
) -> Figure:
"""Create a figure with dartwork style pre-applied.
Parameters
----------
style : str
Style preset name
figsize : tuple[float, float] | None
Figure size (defaults to DW x DW*0.6)
dpi : int
Figure DPI
Returns
-------
Figure
Configured figure
Examples
--------
>>> fig = create_figure_with_style("scientific")
"""
# Apply style
dm.style.use(style)
# Default size
if figsize is None:
figsize = (dm.DW, dm.DW * 0.6)
# Create figure
fig = plt.figure(figsize=figsize, dpi=dpi)
return fig