# API Reference

## Manager

A Manager allows to manipulate multiple [Canvas](#canvas) inside a DOM
element

### Manager.parent_element

*property*: **Element**

DOM element containing every canvas Element

### Manager.list_canvas

*property*: **list<Canvas>**

List of [Canvas](#canvas) managed

### Manager.add_canvas

Add a managed canvas

Parameters:

- *width*(optional): **int**

Width in pixel of the canvas Element. Default to 100

- *height*(optional): **int**

Height in pixel of the canvas Element. Default to 100

- *position*(optional): **int**

Position of the added Canvas in the
[parent_element](#manager-parent_element) and in
[list_canvas](#manager-list_canvas). Default to 0

Return:

**Canvas**: the created [Canvas](#canvas)

### Manager.draw

Draw every managed [Canvas](#canvas)

### Manager.remove_canvas

Remove a canvas at a given position

Parameters:

- *position(optional)*: **int**

Position of the canvas to delete. Default to 0

## Canvas

### Canvas.ctx

*property*: **CanvasRenderingContext2D**

API interface of the associated canvas Element

### Canvas.figure

*property*: **Figure**

Figure held

### Canvas.draw

Render the figure to the canvas

## Figure

A figure hold multiple axes. That the object which contains every plot
elements

### Figure.width

*property*: **int**

Width of the figure (related to each axes)

### Figure.height

*property*: **int**

Height of the figure (related to each axes)

### Figure.list_axes

*property*: **list<Axes>**

List of [Axes](#axes).

### Figure.add_axes

Add an [Axes](#axes) to this figure

Parameters:

- *width*(optional): **int**

Relative width of the new [Axes](#axes). Default to 50

- *height*(optional): **int**

Relative height of the new [Axes](#axes). Default to 50

- *position*(optional): **int**

Position of the new [Axes](#axes) in the [list_axes](#figure-list_axes).
Default to 0

Return:

**Axes**: Added [Axes](#axes)

### Figure.remove_axes

Remove an [Axes](#axes) in a given position

Parameters:

- *position*: **int**

Position of the [Axes](#axes) to delete

## Axes

An Axes represents one plot in a [Figure](#figure)

### Axes.width

*property*: **int**

Width of the axes (relative to the [Figure](#figure))

### Axes.height

*property*: **int**

Height of the axes (relative to the [Figure](#figure))

### Axes.title

*property*: **String**

Title of the axes

### Axes.lines

*property*: **list<Line>**

List of lines

### Axes.plot

Plot y versus x as lines

Parameters:

- *x*: **list<Number>**

x data

- *y*: **list<Number>**

y data

- *linestyle*(optional): **object**

Object defining a style for a line. The structure of the object should
be:
```json
{
    color: "color",
    style: "style",
}
```
where `"color"` is a string like `rgb(x,y,z)`, or `#abcdef` or a name of
a color an,d `"style"` is `solid`, `dotted`, `dashdot` or `dashed`.
Default is "black" and "solid" for color and style.

- *label*(optional): **String**

Label that will be displayed in the legend. Default to empty String

## Line

A line, with a color and a line style

### Line.x

*property*: **list<Number>**

xdata

### Line.y

*property*: **list<Number>**

ydata

### Line.linestyle

*property*: **object**

Object defining a style for a line. The structure of the object should
be:
```json
{
    color: "color",
    style: "style",
}
```
where `"color"` is a string like `rgb(x,y,z)`, or `#abcdef` or a name of
a color an,d `"style"` is `solid`, `dotted`, `dashdot` or `dashed`

### Line.label

*property*: **String**

Label that will be displayed in the legend

### Line.draw

Draw the line in the box coordinate

Parameters:

- *ctx*: **CanvasRenderingContext2D**

Context of the canvas

- *box*: **list<list<int>>**

Box where to draw the line (absolute dimension)

- *view*: **list<list<Number>>**

Box where to draw the line (in the xdata and ydata scale). It links
absolute coordinate and value.

## get_ext_array

Get max or min of a 1d array of number

Parameters:

- *array*: **list<Number>**

Array where to get max/min values

- *f*: **function**

`Math.max` or `Math.min`

- *sign*: **int**

-1 if max, 1 if min

Return:

**Number**: Max/min value of the 1d array