## Time for action – using a legend and annotations

In Chapter 3, Getting Familiar with Commonly Used Functions, we learned how to calculate the EMA of stock prices. We will plot the close price of a stock and three of its EMA. To clarify the plot, we will add a legend. We will also indicate crossovers of two of the averages with annotations. Some steps are again omitted to avoid repetition.

1. Go back to Chapter 3, Getting Familiar with Commonly Used Functions, if needed, and review the EMA algorithm. Calculate and plot the EMAs of `9`, `12`, and `15` periods:

```emas = []

for i in range(9, 18, 3):
weights = np.exp(np.linspace(-1., 0., i))
weights /= weights.sum()

ema = np.convolve(weights, close)[i-1:-i+1]
idx = (i - 6)/3
ax.plot(dates[i-1:], ema, lw=idx, label="EMA(%s)" % (i))
data = np.column_stack((dates[i-1:], ema))
emas.append(np.rec.fromrecords(
data, names=["dates", "ema"]))```

Notice that the `plot()` function call needs a label for the legend. We stored the moving averages...