mpl_plotter Module#

Matplotlib rendering backend for Episia.

This backend produces publication-quality static figures suitable for journals, theses, and reports. No animations are supported.

Class#

class episia.viz.plotters.mpl_plotter.MatplotlibPlotter(config=None)[source]#

Bases: BasePlotter

Matplotlib rendering backend static, publication-quality figures.

Returns matplotlib.figure.Figure objects.

No animations are supported. Use PlotlyPlotter for animated output. Call .save() or fig.savefig(path, dpi=300) to export.

Parameters:

config (Optional[PlotConfig])

BACKEND_NAME: str = 'matplotlib'#

Human-readable backend name used in error messages.

SUPPORTED_ANIMATIONS: Tuple[AnimationType, ...] = ()#

AnimationTypes this backend can handle.

plot_association(result, config=None)[source]#

Single association measure horizontal CI with reference line. Compact figure, suitable as an inline element in a report.

Parameters:
Return type:

Any

plot_contingency(result, config=None)[source]#

2x2 contingency table annotated heatmap with summary table.

Parameters:
Return type:

Any

plot_diagnostic(result, config=None)[source]#

Diagnostic dashboard: confusion matrix heatmap + metrics bar chart. Two-panel layout, publication-ready.

Parameters:
Return type:

Any

plot_epicurve(result, config=None)[source]#

Epidemic curve bar chart suitable for publication. Trend line overlaid if available.

Parameters:
Return type:

Any

plot_forest(result, config=None)[source]#

Forest plot horizontal CI lines, suitable for meta-analysis tables.

Parameters:
Return type:

Any

plot_model(result, config=None)[source]#

Compartmental model trajectories clean multi-line plot. R₀ and peak annotations included.

Parameters:
Return type:

Any

plot_roc(result, config=None)[source]#

ROC curve square axes, AUC annotation, optimal threshold marker. Publication-ready with equal aspect ratio.

Parameters:
Return type:

Any

save(fig, path, fmt=OutputFormat.PNG, dpi=300)[source]#

Save a Matplotlib figure at publication quality.

Default DPI is 300 (journal standard). Supports PNG, SVG, PDF.

Parameters:
Return type:

str

Examples#

Basic usage:

from episia.viz.plotters import get_plotter

# Get Matplotlib backend
plotter = get_plotter("matplotlib")

# Create publication-quality figure
fig = plotter.plot_roc(result)

# Save at high resolution
plotter.save(fig, "roc_curve.pdf", dpi=300)

Journal-ready figures:

from episia.viz.plotters.base_plotter import PlotConfig

# Configure for journal submission
config = PlotConfig.publication(
    title="Figure 2: ROC Curve Analysis",
    width=700,
    height=500
)

fig = plotter.plot_forest(result, config=config)
plotter.save(fig, "forest_plot.svg")  # Vector format

Multiple panels:

# Create multi-panel figure (requires manual subplot handling)
import matplotlib.pyplot as plt

fig, axes = plt.subplots(1, 2, figsize=(12, 5))

# Plot on first subplot
plotter.plot_model(result, config=PlotConfig(width=600, height=400))
# Manual subplot management needed for complex layouts

Supported formats:

from episia.viz.plotters.base_plotter import OutputFormat

# All standard formats supported
plotter.save(fig, "output.png", fmt=OutputFormat.PNG)   # Raster
plotter.save(fig, "output.svg", fmt=OutputFormat.SVG)   # Vector
plotter.save(fig, "output.pdf", fmt=OutputFormat.PDF)   # Vector