marsilea.layers.LayersMesh#

class LayersMesh(data=None, layers=None, pieces=None, shrink=(1.0, 1.0), label=None, label_loc=None, props=None, legend_kws=None)#

Bases: RenderPlan

The mesh that draw customized elements in multi-layers

LayersMesh is a powerful solution for drawing and visualizing customized elements in multi-layered formats. It offers two flexible ways to specify layers:

  1. A single layer of data containing different elements.

  2. Multiple layers of data, where each layer represents a customized element, overlaying elements on top of one another.

When supplying multiple layers, the drawing order follows the order of the input array. Override this order by controlling the zorder attribute in your Pieces.

Parameters:
datanp.ndarray, optional

Use this parameter for a single layer

layerslist of data

For multiple layers, use this parameter. Each layer must be a boolean matrix indicating whether the element is rendered at a specific cell.

piecesdict or array

For a single layer, use a dict to define how to render each element. For multiple layers, use an array to define the rendering of each layer.

labelstr

The mesh label, displayed only when added to the side plot.

label_locstr

The label location.

propsdict

See matplotlib.text.Text

Examples

Drawing a single layer:

>>> from marsilea.layers import LayersMesh, Rect, FrameRect
>>> data = np.random.choice([1, 2, 3], (10, 10))
>>> pieces = {1: Rect(color="r", label="1"),
...           2: FrameRect(color="g", label="2"),
...           3: Rect(color="b", label="3")}
>>> _, ax = plt.subplots()
>>> LayersMesh(data=data, pieces=pieces).render(ax)
../../_images/marsilea-layers-LayersMesh-1.png

Drawing multiple layers:

>>> d1 = np.random.choice([1, 2, 3], (10, 10))
>>> d2 = np.random.choice([1, 2, 3], (10, 10))
>>> d3 = np.random.choice([1, 2, 3], (10, 10))
>>> pieces = [Rect(color="r", label="1"),
...           FrameRect(color="g", label="2"),
...           Rect(color="b", label="3")]
>>> _, ax = plt.subplots()
>>> LayersMesh(layers=[d1, d2, d3], pieces=pieces).render(ax)
../../_images/marsilea-layers-LayersMesh-2.png
render_main = True#