| from __future__ import annotations |
|
|
| from abc import ABC, abstractmethod |
| from typing import TYPE_CHECKING, Any |
|
|
| import numpy as np |
|
|
| if TYPE_CHECKING: |
| import io |
|
|
| from numpy.typing import ArrayLike |
|
|
| from contourpy._contourpy import CoordinateArray, FillReturn, FillType, LineReturn, LineType |
|
|
|
|
| class Renderer(ABC): |
| """Abstract base class for renderers, defining the interface that they must implement.""" |
|
|
| def _grid_as_2d(self, x: ArrayLike, y: ArrayLike) -> tuple[CoordinateArray, CoordinateArray]: |
| x = np.asarray(x) |
| y = np.asarray(y) |
| if x.ndim == 1: |
| x, y = np.meshgrid(x, y) |
| return x, y |
|
|
| x = np.asarray(x) |
| y = np.asarray(y) |
| if x.ndim == 1: |
| x, y = np.meshgrid(x, y) |
| return x, y |
|
|
| @abstractmethod |
| def filled( |
| self, |
| filled: FillReturn, |
| fill_type: FillType | str, |
| ax: Any = 0, |
| color: str = "C0", |
| alpha: float = 0.7, |
| ) -> None: |
| pass |
|
|
| @abstractmethod |
| def grid( |
| self, |
| x: ArrayLike, |
| y: ArrayLike, |
| ax: Any = 0, |
| color: str = "black", |
| alpha: float = 0.1, |
| point_color: str | None = None, |
| quad_as_tri_alpha: float = 0, |
| ) -> None: |
| pass |
|
|
| @abstractmethod |
| def lines( |
| self, |
| lines: LineReturn, |
| line_type: LineType | str, |
| ax: Any = 0, |
| color: str = "C0", |
| alpha: float = 1.0, |
| linewidth: float = 1, |
| ) -> None: |
| pass |
|
|
| @abstractmethod |
| def mask( |
| self, |
| x: ArrayLike, |
| y: ArrayLike, |
| z: ArrayLike | np.ma.MaskedArray[Any, Any], |
| ax: Any = 0, |
| color: str = "black", |
| ) -> None: |
| pass |
|
|
| @abstractmethod |
| def save(self, filename: str, transparent: bool = False) -> None: |
| pass |
|
|
| @abstractmethod |
| def save_to_buffer(self) -> io.BytesIO: |
| pass |
|
|
| @abstractmethod |
| def show(self) -> None: |
| pass |
|
|
| @abstractmethod |
| def title(self, title: str, ax: Any = 0, color: str | None = None) -> None: |
| pass |
|
|
| @abstractmethod |
| def z_values( |
| self, |
| x: ArrayLike, |
| y: ArrayLike, |
| z: ArrayLike, |
| ax: Any = 0, |
| color: str = "green", |
| fmt: str = ".1f", |
| quad_as_tri: bool = False, |
| ) -> None: |
| pass |
|
|