Lines
There are several layers that is composed of only lines.
Line
... a simple line.LineStep
... a line for the step plotInfLine
... a straight line that extends to infinityInfCurve
... a curve that extends to infinityErrorbar
... lines representing error barsRug
... lines representing rug plots
These layers have following properties in common.
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.
These properties can be configured in function calls, via properties or the update
method.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
# function call
layer = canvas.add_line([0, 2, 1, 3, 4, 2, -1], color="black", width=2, style=":")
# properties
layer.color = "#FF36D9"
layer.width = 2.5
layer.style = "-"
# update method
layer.update(color=[0.0, 1.0, 0.0, 1.0], width=1, style="--")
canvas.show()
Line
Line
is a simple line defined by two arrays of x and y coordinates. It is usually
created by the add_line
method. This method
accepts several ways to define the line coordinates.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
canvas.add_line([0, 1, 0, -1, 0]) # only y values
canvas.add_line([0, 1, 2, 3, 4], [1, 2, 1, 0, 1]) # x and y values
canvas.add_line(np.arange(5), np.array([2, 3, 2, 1, 2])) # numpy arrays
canvas.add_line(np.array([[0, 3], [1, 4], [2, 3], [3, 2], [4, 3]])) # (N, 2) array
canvas.show()
LineStep
LineStep
is a line-type layer for the step plot. It is usually created by the
add_step
method.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
x = np.linspace(-1, 1, 24)
y = x ** 2
canvas.add_line(x, y, color="lightgray", alpha=0.5)
canvas.add_step(x, y, color="red", where="pre")
canvas.add_step(x, y, color="orange", where="mid")
canvas.add_step(x, y, color="blue", where="post")
canvas.show()
InfLine
InfLine
is a straight line that extends to infinity. Practically, it is achieved by
connecting a callback that updates the line coordinates when the canvas view range is
updated.
InfLine
is usually created by the add_infline
method, or in the specific cases, add_vline
and add_hline
for vertical and horizontal lines, respectively.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
canvas.add_infline((0, 1), 45, color="black") # y = x + 1
canvas.add_vline(2, color="red") # x = 2
canvas.add_hline(-1, color="blue") # y = -1
canvas.x.lim = (-3, 3)
canvas.y.lim = (-3, 3)
canvas.show()
InfCurve
InfCurve
is a curve that extends to infinity, defined by an arbitrary model function.
Practically, it is achieved by connecting a callback that resamples the curve when the
canvas view range is updated.
InfCurve
is usually created by the [add_infcurve
][whitecanvas.canvas.CanvasBase.
add_infcurve] method. The input model function must be defined as model(x, ...)
where
x
is ndarray
of the x-coordinates and the rest of the arguments are the parameters
of the model. The parameters can be set by the update_params
method of the returned
layer.
import numpy as np
from whitecanvas import new_canvas
def model(x, freq, phase):
return np.sin(x * freq - phase)
canvas = new_canvas("matplotlib")
canvas.add_infcurve(model, color="black").update_params(freq=2, phase=0)
canvas.add_infcurve(model, color="black", style=":").update_params(freq=2, phase=1.6)
canvas.x.lim = (-3, 3)
canvas.y.lim = (-3, 3)
canvas.show()
Errorbars
Errorbars
is a layer that represents error bars with caps. It can be created by the
add_errorbars
method, but if you intend
to add error bars to an existing layer with x/y data, try using the with_xerr
and
with_yerr
methods of the layer to group layers.
import numpy as np
from whitecanvas import new_canvas
canvas = new_canvas("matplotlib")
x = [0, 1, 2]
ylow = [2, 3, 4]
yhigh = [4, 5, 5]
canvas.add_errorbars(x, ylow, yhigh, capsize=0.5, width=3, color="crimson")
canvas.show()