Note
Go to the end to download the full example code
Placing text boxes¶
When decorating axes with text boxes, two useful tricks are to place the text
in axes coordinates (see Transformations Tutorial),
so the text doesn't move around with changes in x or y limits. You
can also use the bbox property of text to surround the text with a
Patch instance -- the bbox keyword argument takes a
dictionary with keys that are Patch properties.

import matplotlib.pyplot as plt
import numpy as np
np.random.seed(19680801)
fig, ax = plt.subplots()
x = 30*np.random.randn(10000)
mu = x.mean()
median = np.median(x)
sigma = x.std()
textstr = '\n'.join((
r'$\mu=%.2f$' % (mu, ),
r'$\mathrm{median}=%.2f$' % (median, ),
r'$\sigma=%.2f$' % (sigma, )))
ax.hist(x, 50)
# these are matplotlib.patch.Patch properties
props = dict(boxstyle='round', facecolor='wheat', alpha=0.5)
# place a text box in upper left in axes coords
ax.text(0.05, 0.95, textstr, transform=ax.transAxes, fontsize=14,
verticalalignment='top', bbox=props)
plt.show()