Bars, Band and Spans
There are several layers that is composed of faces and edges.
Bars... a layer composed of bars.Band... a layer composed of a band region (fill-between region).Spans... a layer composed of infinitely long spans.
These layers have two namespaces: face and edge. face has following properties:
color... color of the faces. Any color-like object is accepted.hatch... hatch pattern of the faces. Should be one of"","-","|,"+","/","\\","x"or".".
Note
hatch is not supported in some backends.
edge has following properties:
color... color of the lines. Any color-like object is accepted.width... width of the lines. Should be a non-negative number.style... style of the lines. Should be one of"-",":","-.","--".
Note
style is not supported in some backends.
Methods for adding these layers always configure the face properties with the
arguments. You can use the with_edge method of the output layer to set edge
properties. This separation is very helpful to prevent the confusion of the arguments,
especially the colors.
Following example uses add_bars and
add_spans methods to create Bars and
Spans layers.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
bars_layer = (
canvas
.add_bars([0, 1, 2, 3], [3, 4, 1, 2], color="yellow")
.with_edge(color="black")
)
spans_layer = (
canvas
.add_spans([[0.2, 0.8], [1.4, 2.1], [1.8, 3.0]], color="blue")
.with_edge(color="black")
)
canvas.y.lim = (0, 5)
canvas.show()
All the properties can be set via properties of face and edge, or the update
method.
#!skip
bars_layer.face.color = "yellow"
bars_layer.face.hatch = "x"
spans_layer.edge.color = "black"
spans_layer.edge.width = 2
spans_layer.edge.style = "--"
# use `update`
bars_layer.face.update(color="yellow", hatch="x")
spans_layer.edge.update(color="black", width=2, style="--")
Multi-face and Multi-edge
As for Markers, Bars and Spans supports multi-face and multi-edge.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
layer = (
canvas
.add_bars([0, 1, 2, 3], [3, 4, 1, 2])
.with_face_multi(color=["red", "#00FF00", "rgb(0, 0, 255)", "black"])
)
canvas.show()
After calling with_face_multi, the layer face property will return arrays instead
of scalar values.
layer.face.color # (N, 4) array of RGBA colors
layer.face.hatch # (N,) array of hatchs
layer.face.alpha # (N,) array of alpha values