# Plotting

This package defines plot recipes for use with Plots.jl.

## Plotting a `BSplineBasis`

A B-spline basis can be plotted by passing it to the `Plots.plot`

function:

```
using Plots
basis = BSplineBasis(4, 0:5)
plot(basis)
```

By default, each B-spline is drawn with 100 samples. The number of samples can be changed with an optional argument, i.e., `plot(basis, 5)`

will plot each B-spline with only 5 samples.

## Plotting `Spline`

s and their derivatives

`Spline`

s can be plotted like functions:

```
spl = approximate(sin, basis)
plot(1:5, spl) # evaluate spl on the points 1:5 and plot it
plot(spl, 1, 3) # plot spl from 1 to 3
plot(spl) # plot spl from 0 to 5 (its support)
```

To plot a spline together with a `Function`

, it needs to be of a `Function`

type. For this purpose, a `Function`

constructor is provided that wraps a `Spline`

into a `Function`

object.

`plot([sin, Function(spl)], 0, 5, label=["exact" "spline approximation"])`

The `Function`

wrapper can also be used to plot the derivatives of a spline via an optional argument:

```
f1 = Function(spl)
f2 = Function(spl, Derivative(1))
f3 = Function(spl, Derivative(2))
f4 = Function(spl, Derivative(3))
plot([f1, f2, f3, f4])
```