Source code for whitecanvas.backend.plotly.image

from __future__ import annotations

import numpy as np
from cmap import Colormap
from whitecanvas.protocols import ImageProtocol, check_protocol
from ._base import PlotlyLayer


[docs]@check_protocol(ImageProtocol) class Image(PlotlyLayer): def __init__(self, data: np.ndarray): self._props = { "z": data, "visible": True, "type": "heatmap", "colorscale": "gray", "zmin": np.min(data), "zmax": np.max(data), "dx": 1, "dy": 1, "x0": 0, "y0": 0, "showlegend": False, } self._cmap = Colormap("gray") def _plt_get_data(self) -> np.ndarray: return self._props["z"] def _plt_set_data(self, data: np.ndarray): self._props["z"] = data def _plt_get_colormap(self) -> Colormap: return self._cmap def _plt_set_colormap(self, cmap: Colormap): self._props["colorscale"] = cmap.to_plotly() self._cmap = cmap def _plt_get_clim(self) -> tuple[float, float]: return self._props["zmin"], self._props["zmax"] def _plt_set_clim(self, clim: tuple[float, float]): self._props["zmin"], self._props["zmax"] = clim def _plt_get_visible(self) -> bool: return self._props["visible"] def _plt_get_translation(self) -> tuple[float, float]: return self._props["x0"], self._props["y0"] def _plt_set_translation(self, translation: tuple[float, float]): self._props["x0"], self._props["y0"] = translation def _plt_get_scale(self) -> tuple[float, float]: return self._props["dx"], self._props["dy"] def _plt_set_scale(self, scale: tuple[float, float]): self._props["dx"], self._props["dy"] = scale