`nbinteract`

comes with a set of functions that produce Javascript-based plots designed for interaction.

Most plotting functions that come with `nbinteract`

take in response functions that return the **data** to be plotted.

```
In [1]:
```import nbinteract as nbi
import numpy as np

`?`

at the end. For example, to view the API reference for `nbi.hist`

:

```
In [2]:
```nbi.hist?

`hist`

generates a histogram that allows interaction with the parameters for the response function.

`hist`

takes in a single response function. The response function returns the array of numerical values that will be shown in the histogram. The `hist`

function allows interaction with the response function's parameters by specifying them as keyword arguments in the same format as `ipywidgets.interact`

. Any argument that can be used for `ipywidgets.interact`

can be used for `hist`

.

```
In [3]:
```def hist_response_function(mean, sd, size=1000):
'''
Returns 1000 values picked at random from the normal
distribution with the mean and SD given.
'''
return np.random.normal(loc=mean, scale=sd, size=1000)

```
In [4]:
```nbi.hist(hist_response_function, mean=(0, 10), sd=(0, 2.0, 0.2))

```
```

`options`

parameter of the plotting functions:

```
In [5]:
```options = {
'title': '1000 random points from normal distribution',
'xlim': (0, 15),
'ylim': (0, 0.4),
}
nbi.hist(hist_response_function, options=options, mean=(0, 10), sd=(0, 2.0, 0.2))

```
```

You may call `nbinteract`

plotting functions with plain data as the input as well:

```
In [6]:
```nbi.hist(np.random.normal(size=1000))

```
```

`bar`

generates an bar plot that allows interaction with the parameters for the response functions.

The first two arguments of `bar`

are response functions that return the x and y-axis data arrays, respectively. Either argument can be arrays themselves. Arguments for the response functions must be passed in as keyword arguments to `bar`

in the format expected by interact. The response function for the y-axis data will be called with the x-axis data as its first argument.

For example, in the bar plot below `categories`

generates the categories to plot on the x-axis and `heights`

generates the y-axis heights. The `heights`

function uses the parameter `xs`

which is the array of x-axis data points.

```
In [7]:
```def categories(n):
return np.arange(n)
def heights(xs, offset):
return xs + offset
opts = {
'ylim': (0, 20),
}
nbi.bar(categories, heights, n=(0, 10), offset=(1, 10), options=opts)

```
```

`scatter_drag`

generates a scatter plot that allows interaction through clicking and dragging the points on the graph.

`scatter_drag`

takes in two lists/arrays consisting of the x-coordinates and y-coordinates of the points to plot. It generates an interactive scatter plot where the points can be dragged by the user and a best fit line is updated automatically according to the placement of the points.

`scatter_drag`

does not allow response functions as inputs.

```
In [8]:
```x_coords = np.arange(10)
y_coords = np.arange(10) + np.random.rand(10)
opts = {'xlim': (0, 9), 'ylim': (0, 11), 'animation_duration': 250}
nbi.scatter_drag(x_coords, y_coords, options=opts)

```
```

`scatter`

generates a scatter plot that allows interaction with the parameters to the response functions.
This is different from scatter_drag which facilitates interaction using click and drag actions.

The first two arguments of `scatter`

are response functions that return the x and y-axis coordinates, respectively. Either argument can be arrays themselves. Arguments for the response functions must be passed in as keyword arguments to `scatter`

in the format expected by interact. The response function for the y-coordinates will be called with the x-coordinates as its first argument.

```
In [9]:
```def x_values(n): return np.random.choice(100, n)
def y_values(xs): return np.random.choice(100, len(xs))
nbi.scatter(x_values, y_values, n=(0,200))

```
```

`line`

generates a scatter plot that allows interaction with the parameters to the response functions.

The first two arguments of `line`

are response functions that return the x and y-axis coordinates, respectively. Either argument can be arrays themselves. Arguments for the response functions must be passed in as keyword arguments to `line`

in the format expected by interact. The response function for the y-coordinates will be called with the x-coordinates as its first argument.

```
In [10]:
```def x_values(max): return np.arange(0, max)
def y_values(xs, sd):
return xs + np.random.normal(0, scale=sd, size=len(xs))
opts = {
'xlim': (0, 50),
'ylim': (0, 55),
'animation_duration': 250,
}
nbi.line(x_values, y_values, max=(10, 50), sd=(1, 10), options=opts)

```
```