Source code for figrecipe._dev.demo_plotters.image_matrix.plot_imshow

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""imshow: image display demo."""

import warnings
from pathlib import Path


def _load_scitex_icon():
    """Load scitex icon image if available.

    Returns
    -------
    numpy.ndarray or None
        Image array if icon found, None otherwise.
    """
    # Path from demo file: image_matrix -> demo_plotters -> _dev -> figrecipe -> src -> project_root
    icon_path = Path(__file__).parents[5] / "docs" / "scitex-icon-navy-inverted.png"

    if not icon_path.exists():
        # Try alternative path relative to package root (for installed package)
        import figrecipe

        pkg_root = Path(figrecipe.__file__).parent.parent.parent
        icon_path = pkg_root / "docs" / "scitex-icon-navy-inverted.png"

    if icon_path.exists():
        try:
            import matplotlib.image as mpimg

            return mpimg.imread(str(icon_path))
        except Exception as e:
            warnings.warn(
                f"Failed to load scitex icon: {e}. Falling back to synthetic data.",
                stacklevel=2,
            )
            return None
    return None


[docs] def plot_imshow(plt, rng, ax=None): """Image display demo. Demonstrates: ax.imshow() Uses the scitex icon if available, otherwise falls back to synthetic data. """ if ax is None: fig, ax = plt.subplots() else: fig = ax.get_figure() if hasattr(ax, "get_figure") else ax.fig # Try to load scitex icon, fall back to synthetic data data = _load_scitex_icon() is_synthetic = data is None if is_synthetic: warnings.warn( "Scitex icon not found. Using synthetic data for imshow demo.", stacklevel=2, ) data = rng.uniform(0, 1, (20, 20)) im = ax.imshow(data, id="imshow") ax.axis("off") ax.set_title("imshow") # Add colorbar for 2D data (not RGB images) if is_synthetic or (data.ndim == 2): from figrecipe._utils._colorbar import add_colorbar add_colorbar(fig, im, ax=ax) return fig, ax
# EOF