Add sequential alphbet labels to subplot axes

    Args
    ----
    axes: list of pyplot.ax
        A list of matplotlib axes to add the label labels to
    xpos: float or array_like
        X position(s) of labels in figure coordinates
    ypos: float or array_like
        Y position(s) of labels in figure coordinates
    suffix: str
        String to append to labels (e.g. '.' or ' name)
    color: matplotlib color
        Color of labels
    fontsize: int
        Alppa fontsize
    fontweight: matplotlib fontweight
        Alpha fontweight
    boxstyle: matplotlib boxstyle
        Alpha boxstyle
    facecolor: matplotlib facecolor
        Color of box containing label
    edgecolor: matplotlib edgecolor
        Color of box'es border containing label
    alpha: float
        Transparency of label

    Returns
    -------
    axes: list of pyplot.ax
        A list of matplotlib axes objects with alpha labels added

def add_alpha_labels(axes, xpos=0.03, ypos=0.95, suffix='', color=None,
        fontsize=14, fontweight='normal', boxstyle='square', facecolor='white',
        edgecolor='white', alpha=1.0):
    '''Add sequential alphbet labels to subplot axes

    Args
    ----
    axes: list of pyplot.ax
        A list of matplotlib axes to add the label labels to
    xpos: float or array_like
        X position(s) of labels in figure coordinates
    ypos: float or array_like
        Y position(s) of labels in figure coordinates
    suffix: str
        String to append to labels (e.g. '.' or ' name)
    color: matplotlib color
        Color of labels
    fontsize: int
        Alppa fontsize
    fontweight: matplotlib fontweight
        Alpha fontweight
    boxstyle: matplotlib boxstyle
        Alpha boxstyle
    facecolor: matplotlib facecolor
        Color of box containing label
    edgecolor: matplotlib edgecolor
        Color of box'es border containing label
    alpha: float
        Transparency of label

    Returns
    -------
    axes: list of pyplot.ax
        A list of matplotlib axes objects with alpha labels added
    '''
    import seaborn
    import string
    import numpy

    if not numpy.iterable(xpos):
        xpos = [xpos,]*len(axes)
        ypos = [ypos,]*len(axes)

    if (len(xpos) > 1) or (len(ypos) > 1):
        try:
            assert (len(axes) == len(xpos))
        except AssertionError as e:
            e.args += 'xpos iterable must be same length as axes'
            raise
        try:
            assert (len(axes) == len(ypos))
        except AssertionError as e:
            e.args += 'ypos iterable must be same length as axes'
            raise
    else:
        xpos = [xpos,]
        ypos = [ypos,]

    colors = seaborn.color_palette()
    abc = string.ascii_uppercase

    for i, (label, ax) in enumerate(zip(abc[:len(axes)], axes)):
        if color is None:
            color = colors[i]
        kwargs = dict(color=color,
                      fontweight=fontweight,)

        bbox = dict(boxstyle=boxstyle,
                     facecolor=facecolor,
                     edgecolor=edgecolor,
                     alpha=alpha)

        ax.text(xpos[i], ypos[i], '{}{}'.format(label, suffix),
                transform=ax.transAxes, fontsize=fontsize,
                verticalalignment='top', bbox=bbox, **kwargs)
    return axes