# genieclust.plots¶

Various plotting functions

`genieclust.plots.``plot_scatter`(X, y=None, labels=None, **kwargs)

Draws a scatter plot

Parameters
Xarray_like

Either a two-column matrix that gives the x and y coordinates of the points or a vector of length n. In the latter case, y must be a vector of length n as well.

yNone or array_like

The y coordinates of the n points in the case where X is a vector.

labelsNone or array_like

A vector of n integer labels that correspond to each point in X, that gives its plot style.

**kwargsCollection properties

Further arguments to matplotlib.pyplot.scatter.

Notes

If X is a two-column matrix, then `plot_scatter(X)` is equivalent to `plot_scatter(X[:,0], X[:,1])`.

Unlike in matplotlib.pyplot.scatter, for any fixed `j`, all points `X[i,:]` such that `labels[i] == j` are always drawn in the same way, no matter the `max(labels)`. In particular, labels 0, 1, 2, and 3 correspond to black, red, green, and blue, respectively.

This function was inspired by the `plot()` function from the R package `graphics`.

Examples

An example scatter plots where each point is assigned one of two distinct labels:

```>>> n = np.r_[100, 50]
>>> X = np.r_[np.random.randn(n, 2), np.random.randn(n, 2)+2.0]
>>> l = np.repeat([0, 1], n)
>>> genieclust.plots.plot_scatter(X, labels=l)
>>> plt.show()
```

(png, hires.png, pdf) Here are the first 10 plotting styles:

```>>> ncol = len(genieclust.plots.col)
>>> nmrk = len(genieclust.plots.mrk)
>>> mrk_recycled = np.tile(
...     genieclust.plots.mrk,
...     int(np.ceil(ncol/nmrk)))[:ncol]
>>> for i in range(10):
...     plt.text(
...         i, 0, i, horizontalalignment="center")
...     plt.plot(
...         i, 1, marker=mrk_recycled[i],
...         color=genieclust.plots.col[i],
...         markersize=25)
>>> plt.title("Plotting styles for labels=0,1,...,9")
>>> plt.ylim(-3,4)
>>> plt.axis("off")
>>> plt.show()
```

(png, hires.png, pdf) `genieclust.plots.``plot_segments`(pairs, X, y=None, style='k-', **kwargs)

Draws a set of disjoint line segments

Parameters
pairsarray_like

A two-column matrix that gives the pairs of indices defining the line segments to draw.

Xarray_like

Either a two-column matrix that gives the x and y coordinates of the points or a vector of length n. In the latter case, y must be a vector of length n as well.

yNone or array_like

The y coordinates of the n points in the case where X is a vector.

style:

See matplotlib.pyplot.plot.

**kwargsCollection properties

Further arguments to matplotlib.pyplot.plot.

Notes

The function draws a set of disjoint line segments from `(X[pairs[i,0],0], X[pairs[i,0],1])` to `(X[pairs[i,1],0], X[pairs[i,1],1])` for all `i` from `0` to `pairs.shape-1`.

matplotlib.pyplot.plot is called only once. Therefore, you can expect it to be pretty pretty fast.

Examples

Plotting the convex hull of a point set:

```>>> import scipy.spatial
>>> X = np.random.randn(100, 2)
>>> hull = scipy.spatial.ConvexHull(X)
>>> genieclust.plots.plot_scatter(X)
>>> genieclust.plots.plot_segments(hull.simplices, X, style="r--")
>>> plt.show()
```

(png, hires.png, pdf) Plotting the minimum spanning tree:

```>>> X = np.random.randn(100, 2)
>>> mst = genieclust.internal.mst_from_distance(X, "euclidean")
>>> genieclust.plots.plot_scatter(X)
>>> genieclust.plots.plot_segments(mst, X, style="m-.")
>>> plt.axis("equal")
>>> plt.show()
```

(png, hires.png, pdf) 