#######################################################################
### Matrix transformation


matrix (pd.DataFrame, None): Data matrix used to make the logo. Row names are
    the positions, column names are the characters, and values are
    floats (or ints). If the matrix_type is set to 'counts',
    'probability', or 'information', all elements of matrix must be
    floats >= 0. In what follows, L refers to the number of matrix rows
    and C refers to the number of matrix columns.

fasta_file (str, None): FASTA file from which sequence counts are to be loaded.
    The resulting matrix_type is 'counts'.

meme_file (str, None): MEME file from which to load a motif and (optionally)
    a background model as well. The resulting matrix_type is 'probability'.
    The first motif within the MEME file is loaded if neither meme_motifname
    nor meme_motifnum is specified.  A background model will be loaded
    automatically if any is detected. Ignored if None is passed.

meme_motifname (str, None): The name of the motif to be loaded from the MEME
    file used when meme_file is specified. Ignored if None is passed.

meme_motifnum (int > 0, None): The number of the motif to be loaded from the
    MEME file used when meme_file is specified. The first motif is
    specified by a value of 1. Ignored if None is passed.

iupac_string (str, None): A string specifying a motif in IUPAC format. The
    resulting matrix_type is 'probability' and the resulting characters
    are 'ACGT'. The parameter sequence_type can be used in conjunction
    with this parameter to transform the characters to 'dna', 'RNA',
    or 'rna.' Ignored if None is passed.

sequences_csvfile (str, None): Name of file containing sequence and
    (optionally) sequence counts in column-separated value format. Ignored
    if None is passed.

seq_col (literal, None): If csv_file is specified, this specifies the name
    of the column that lists sequences. Must be passed if csv_file is
    specified.

ct_col (literal, None): If csv_file is specified, this specifies the name
    of the column that lists the number of counts for each sequence. If
    csv_file is specified and this is not, a count of 1 will be assumed
    for each listed sequence. Ignored if None is passed.

matrix_csvfile (str, None): Name of file containing matrix values in
    CSV format. Ignored if None is passed.

csv_index_col (literal, None): Name of column to user for matrix positions.
    If None, the default value for pandas.read_csv(index_col=) is used.

csv_delim_whitespace (bool, None): Whether to interpret whitespace as the
    csv delimiter. If None, the default value for
    pandas.read_csv(delim_whitespace=) is used.

csv_delimiter (bool, None): The delimiter character to use when parsing
    CSV files. If None, the default value for pandas.read_csv(delimneter=)
    is used.

csv_header (literal, None): Row to use as header when parsing CSV file.
    If None, the default value for pandas.read_csv(header=) is used.

csv_usecols (literal, None): Columns to use when parsing CSV file. If None,
    the default value for pandas.read_csv(use_cols=) is used

csv_kwargs (dict): If csv_file is specified, this dictionary contains the
    keyword arguments to be passed to pandas.read_csv. For example, if
    the csv file uses whitespace to separate columns, one might pass
    csv_kwargs={'delim_whitespace':True}.

background_seqcsvfile (str, None): Name of file containing background
    sequences and (optionally) background sequence counts in
    column-separated value format. Defaults to sequences_csvfile if None
    is passed.

background_seqcol (literal, None): If csv_file or background_csvfile
    is specified, this specifies the name of the column that lists
    background sequences. Defaults to seq_col.

background_ctcol (literal, None): If csv_file or background_csvfile is
    specified, this specifies the name of the column that lists the number
    of counts for each sequence. Defaults to ct_col if None is specified.

background_csvkwargs (dict): If csv_file or background_csvfile is
    specified, this dictionary contains the keyword arguments to be
    passed to pandas.read_csv. For example, if the csv file uses whitespace
    to separate columns, one might pass csv_kwargs={'delim_whitespace':True}.
    Defaults to csv_kwargs if None is passed.

background_matcsvfile (str, None): Name of file containing background matrix
    in CSV format. This matrix must be of type 'counts' or 'probability',
    which is specified by the background_mattype parameter.

background_mattype (str): Type of background matrix loaded from
    background_matcsvfile. Must  be 'counts' or 'probability'.

matrix_type (str in set, None): Type of data passed in matrix. If str,
    value must be in {'counts','probability', 'enrichment',
    'information'}. If None, this parameter is either set automatically
    (e.g. by specifying iupac_string) or a generic logo is created.

logo_type (str in set, None): Type of logo to display. If str, value
    must be in {'counts','probability', 'enrichment', 'information'}.
    If None, defaults to matrix_type.

background (array, dict, pd.DataFrame, None): Only used when creating
    logos of logo_type='enrichment' from matrices of matrix_type=
    'counts' or matrix_type='probability'. Specifies the background
    probability of each character at each position. Different value
    types are interpreted in different ways:
    - None: Each character in each column of matrix is assumed to
        occur with equal background probability
    - array: Must contain floats >= 0 and be of length C. If so, these
        float values are interpreted as the background probabilities of
        the characters corresponding to each column of matrix.
        E.g., for a GC content of 60% and matrix columns ['A','C','G',
        'T'], one can pass,
            background=[0.2, 0.3, 0.3, 0.2]
    - dict: All characters specified by matrix must be keys of this
        dictionary, and the corresponding values must be floats >= 0.
        If so, the value is interpreted as the relative background
        probability of the character corresponding to each key. E.g.,
        for a GC content of 60% one can pass
            background = { 'A':0.2, 'C':0.3, 'G':0.3, 'T':0.2}
    - pd.DataFrame, 1 row: Columns must list the same chaarcters as
        the columns of matrix, and values must be floats >= 0. If so,
        each float is interpreted as the relative background
        probability of the character corresponding to each column.
        E.g., for a GC content of 60% one can pass a DataFrame that
        that looks like:
                'A'     'C'     'G'     'T'
         0      0.2     0.3     0.3     0.2
    - pd.DataFrame, L rows: Columns must list the same characters as
        the columns of matrix, and values must be floats >= 0. If so,
        the float in each row and column is interpreted as the relative
        background probability of the corresponding character at that
        corresponding position. This option is particularly useful
        when

pseudocount (float >= 0): For converting a counts matrix to a
    probability matrix.

enrichment_logbase (float in set): Logarithm to use when computing
    enrichment. Value must be in {2, 10, np.e}.

center_columns (bool): If True, values at each position are shifted
    so that their mean value is 0.

information_units (str in set): Units to use when computing information
    logos. Values must be in {'bits', 'nats'}.

counts_threshold (float >= 0, None): The total number of sequences in an
    alignment that must have a non-deletion character for that position
    to be included in the resulting counts matrix and derived matrices.
    If this is not None, positions with counts falling below this threshold
    will be removed from the matrix. Regardless of whether any positions are
    removed, matrix positions will be renumbered starting from zero.

negate_matrix (bool): If true, all matrix values are multiplied by -1.

#######################################################################
### Immediate drawing

figsize ([float >= 0, float >=0], None): Size of figure in inches. If
    not None, a default size for the figure will be used. If draw_now
    is True, a new figure will be created of this size, and will be
    stored in logo.fig. The axes on which the logo is drawn will be
    saved to logo.ax.

draw_now (bool): If True, a new figure will be created of size figsize
    and the logo will be drawn. If not, the logo will not be drawn.

save_to_file (str, None): If string, specifies the name of file that
    logo is saved to. File type is determined automatically from the
    extension of the file name. If None, no file is stored.

dpi (int): The resolution at which to save the logo image if writing
    to a non-vector format.

max_positions_per_line (int > 0): The maximum number of positions per line. If
    the number of positions within a matrix exceeds this number, the
    logo will be split over multiple lines. If figsize is None, a
    figure whose height is proportional to the number of lines will
    be created.

#######################################################################
### Position choice

position_range ([int >= 0, int >= 0], None): Rows of matrix to use when
    drawing logo. If None, all rows are used.

shift_first_position_to (float): Position value to be assigned to the
    first row of matrix that is actually used.

show_position_zero (bool): If False, no xticklabel 0 will be shown. Instead,
    xticklabels for positions >= 0 are all increased by 1; the x-axis will
    thus be labeled using ...-3, -2, -1, 1, 2, 3,... . This is because some
    biological numbering convensions avoid the use of zero. This option only
    affects xticklabels, not the positions listed in the matrix dataframe.

#######################################################################
### Position choice

sequence_type (str in set, None): Specifies the set of characters to
    used in the sequence logo. Non-sequene characters will be ignored.
    If str, must be in {'DNA', 'dna', 'RNA', 'rna', 'PROTEIN', or
    'protein'}. If None, this option is ignored.

characters (str, None): Specifies the set of characters to be used in
    the sequence logo. If str, any of the non-whitespace characters
    listed in the string can be used. If None, this option is ignored.
    Overridden by sequence_type.

ignore_characters (str, None): Specifies the set of characters to not
    be used in the sequence logo. If str, all of the characters listed
    will be ignored. If None, all characters will be used. Overridden
    by characters.

#######################################################################
### Logo character styling

character_colors (color scheme):  Face color of logo characters. Default 'gray'.
    Here and in what follows a variable of type 'color' can
    take a variety of value types.
    - (str) A LogoMaker color scheme in which the color is determined
        by the specific character being drawn. Options are,
        + For DNA/RNA: 'classic', 'grays', 'base_paring'.
        + For protein: 'hydrophobicity', 'chemistry', 'charge'.
    - (str) A built-in matplotlib color name  such as 'k' or 'tomato'
    - (str) A built-in matplotlib colormap name such as  'viridis' or
        'Purples'. In this case, the color within the colormap will
        depend on the character being drawn.
    - (list) An RGB color (3 floats in interval [0,1]) or RGBA color
        (4 floats in interval [0,1]).
    - (dict) A dictionary mapping of characters to colors, in which
        case the color will depend on the character being drawn. E.g.,
        {'A': 'green',
         'C': [ 0.,  0.,  1.],
         'G': 'y',
         'T': [ 1.,  0.,  0.,  0.5]}

character_alpha (float in [0,1]): Opacity of logo character face color. Here
    and in what follows, if the corresponding color is specified by an
    RGBA array, this alpha value will be multiplied by the 'A' value
    that array to yield the final alpha value.

character_edgecolors (color scheme): Edge color of the logo characters.

character_edgealpha (float in [0,1]): Opacity of character edge color.

character_edgewidth (float >= 0): Width of character edges.

character_boxcolors (color scheme): Face color of the box containing each logo
    character.

character_boxalpha (float in [0,1]): Opacity box face color.

character_boxedgecolors (color scheme): Edge color of the box containing each
    logo character.

character_boxedgealpha (float in [0,1]): Opacity of box edge color.

character_boxedgewidth (float >= 0): Width of box edges.

character_zorder (float >= 0): Determines whether characters and their bounding
    boxes appear in front of or behind other features of the logo, such as
    gridlines. The higher zorder is, the more in-front these characters
    will be. Characters are always drawn immediately in front of their
    bounding boxes.

#######################################################################
### Highlighted logo character styling

highlight_sequence (str, None): Sequence to highlight within the logo.
    If str, sequence must be the same length as the logo. The valid
    character at each position in this sequence will then be drawn
    using style parameters highlight_colors, highlight_alpha, etc.,
    instead of colors, alpha, etc. If None, no characters are
    highlighted.  In what follows, each highlight_* parameter behaves behaves
    as the * parameter listed above, but is used only for highlighted
    characters. Each parameter can also be None, and in fact is None
    by default. Each highlight_* parameter, when None is passed,
    defaults to the value provided in the corresponding * parameter.

highlight_bgconsensus (bool): If True, the consensus sequence of the background
    probability matrix is used as highlight_sequence.

highlight_colors (color scheme, None): See colors.

highlight_alpha (float in [0,1], None): See alpha.

highlight_edgecolors (color scheme, None): See edgecolors.

highlight_edgealpha (float in [0,1], None): See edgealpha.

highlight_edgewidth (float >= 0, None): See edge_width.

highlight_boxcolors (color scheme, None): See boxcolors.

highlight_boxalpha (float in [0,1], None): See boxalpha.

highlight_boxedgecolors (color scheme, None): See boxedgecolors.

highlight_boxedgealpha (float in [0,1], None): see boxedgealpha.

highlight_boxedgewidth (float >= 0, None): See boxedgewidth.

highlight_zorder (float): See zorder.

#######################################################################
### Fixed character styling

fullheight (dict, list, None): Either a dictionary or a list. If a dictionary
    listing positions as keys and characters as values, such as {3:'G', 4:'U'}
    those characters& bounding box will be drawn at those positions using the
    full height of the y-axis. If a list specifying just positions is passed,
    only a box the full height of the y-axis will be drawn at those positions.
    In what follows, each fullheight_* parameter behaves behaves as the *
    parameter listed above. Unlike highlight_* parameters described immediately
    above, however, fullheight_* parameters do not default to the values of the
    corresponding * parameter if None is passed.

fullheight_colors (color scheme): See colors.

fullheight_alpha (float in [0,1]): See alpha.

fullheight_edgecolors (color scheme): See edgecolors.

fullheight_edgealpha (float in [0,1]): See edgealpha.

fullheight_edgewidth (float >= 0): See edge_width.

fullheight_boxcolors (color scheme): See boxcolors.

fullheight_boxalpha (float in [0,1]): See boxalpha.

fullheight_boxedgecolors (color scheme): See boxedgecolors.

fullheight_boxedgealpha (float in [0,1]): see boxedgealpha.

fullheight_boxedgewidth (float >= 0): See boxedgewidth.

fullheight_zorder (float): See zorder.

fullheight_vsep (float >= 0): Overrides vsep when applied to fullheight
    positions.

fullheight_width (float >= 0): Overrides width when applied to fullheight
    positions

#######################################################################
### Logo character font

# Logo characters #

font_properties (FontProperties, None): The logo character font
    properties. If FontProperties, overrides all of the font_*
    parameters below. If None, is ignored.

font_file (str, None): The local file specifying the logo character
    font. Specifically, the value passed as the 'fname' parameter in
    the FontProperties constructor.

font_family (str, list, None): The logo character font family name.
    Specifically, the value passed as the 'family' parameter when
    calling the FontProperties constructor. From matplotlib
    documentation:
        "family: A list of font names in decreasing order of priority.
        The items may include a generic font family name, either
        'serif', 'sans-serif', 'cursive', 'fantasy', or 'monospace'.
        In that case, the actual font to be used will be looked up from
        the associated rcParam in matplotlibrc."


font_weight (str, float, None): The logo character font weight.
    Specifically, the value passed as the 'weight' parameter in the
    FontProperties constructor. From matplotlib documentation:
        "weight: A numeric value in the range 0-1000 or one of
        'ultralight', 'light', 'normal', 'regular', 'book', 'medium',
        'roman', 'semibold', 'demibold', 'demi', 'bold', 'heavy',
        'extra bold', 'black'."

font_style (str, None): The logo character font style. Specifically,
    the value passed as the 'style' parameter in the FontProperties
    constructor. From matplotlib documentation:
        "style: Either 'normal', 'italic' or 'oblique'."

#######################################################################
### Character placement

stack_order (str in set): Order in which to stack characters at the
    same position. Can be 'big_on_top', 'small_on_top',
    'fixed_going_up', 'fixed_going_down'.

use_transparency (boolean): Option to render characters with an opacity
    proportional to character height.

max_alpha_val (float >= 0.0, None): Absolute matrix element value
    corresponding to opacity of 1. If None, this is set to the largest
    absolute-value matrix element.

below_shade (float in [0,1]): Amount by which to darken logo characters
    drawn below the baseline. E.g., a value of 0.8 will cause RBG
    values to be reduced to 80% of their initial value.

below_alpha (float in [0,1]): Amount by which to reduce the opacity of
    logo characters drawn below the baseline. E.g., a value of 0.8 will
    cause opacity values to be reduced to 80% of their initial value.

below_flip (bool): Whether to flip upside down all characters drawn
    below the baseline.

hpad (float >= 0): Relative amount of empty space to include on the
    sides of each character within its bounding box. E.g., a value of
    0.2 will result in empty space totaling 20% of that character's
    width (10% on each side).

vpad (float >= 0): Relative amount of empty space to include above and
    below each character within its bounding box. E.g., a value of
    0.2 will result in empty space totaling 20% of that character's
    height (10% above and 10% below).

width (float in [0,1]): Width of each character bounding box in
    position units.

vsep (float >= 0): Vertical separation between stacked characters and their
    bounding boxes, expressed as a fraction of the span of the y-axis.
    Half of this separation is subtracted from both the top and bottoms
    of each character's bounding box. Characters with height smaller than
    this separation are rendered as empty bounding boxes.

uniform_stretch (bool): If True, each logo character will be
    horizontally stretched by the same factor. This factor will be
    determined by the natrually widest character that appears in the
    logo, and the stretch factor will be computed to accomodate the
    value of hpad specified by the user. Most characters will thus be
    drawn with additional varying blank space on either side.

max_stretched_character (str length 1, None): If a character is
    specified, logo characters will be horizontally stretched in the
    following manner: The specified character and characters naturally
    wider than it will be stretched according to width and hpad, while
    narrower characters will be stretched the same amount as the
    specified character. Specifying a value like 'A' allows wide
    characters like 'W' and 'A' to be stretched to fill the avaliable
    width while preventing naturally narrow characters like 'I' from
    being stretched an absurdly large amount.

remove_flattened_characters (bool): If vsep is set, some characters will be
    shrunk to size zero. This parameter determines whether or not
    these flattended characters will contribute to the height of a stack.

#######################################################################
### Axes formatting

axes_type (str in set): Axes logo style. Value must be in {'classic',
    'rails', 'naked', 'everything, 'vlines'}.

style_sheet (str, None): Matplotlib style sheet to use for default axis
    styling. This value is passed to plt.style.use(). Available style
    sheets are listed in plt.style.available. Examples include
        - 'classic': Standard Matplotlib style prior to v2.0
        - 'dark_background': White text/lines on black background
        - 'ggplot': Mimics the default style of ggplot in R
        - 'fivethirtyeight': Mimics the style used by
            fivethirtyeight.com
        - 'seaborn-pastel', 'seaborn-darkgrid', etc: Mimics the style
            defined in the popular seaborn plotting package.
    Ignored if None is passed.

rcparams (dict): Default parameter values to used for matplotlib
    plotting. Warning: using this changes defaults for all subsequent
    plots, not just the current logo.

#######################################################################
### Scalebar formatting

show_scalebar (bool, None): If not None, specifies wheterh to show a scalebar.

scalebar_length (float, None): If not None, specifies the  length of the
    scalebar in y-axis units.

scalebar_linewidth (float, None): If not None, specifies the width of the
    scalebar in points.

scalebar_color (float, None): If not None, specifies the color of the
    scalebar itself (not the text).

scalebar_text (str, None): If not None, specifies the text displayed next
    to the scalebar.

scalebar_x (float, None): If not None, specifies the x-position of the
    scalebar (which is vertical).

scalebar_ymin (float, None): If not None, specifies the y-cooridnate of the
    bottom of the scalebar.

scalebar_texthalignment (str, None): If not None, specifies the horizonotal
    alignment of the scalebar. See mpl.text.Text() documentation for options.

scalebar_textvalignment (str, None): If not None, specifies the vertical
    alignment of the scalebar. See mpl.text.Text() documentation for options.

scalebar_textrotation (float, None): If not None, specifies the rotation
    angle of the scalebar label text.

#######################################################################
### Gridline formatting

show_gridlines (bool, None): Whether to show gridlines. Note: gridlines are
    plotted below logo characters but above logo bounding boxes.

gridline_axis (str in set, None): If str, specifies axes on which to
    plot gridlines value in {'x', 'y', 'both'}. Passed as the 'axis'
    argument to ax.grid() if not None.

gridline_width (float >= 0, None): If not None, specifies the width of
    plotted gridlines. Is passed as the 'linewidth' argument to
    ax.grid() if not None.

gridline_color (color, None): If not None, specifies the color of the
    gridlines. Is passed as the 'color' argument to ax.grid() if not
    None.

gridline_alpha (float in [0,1], None): If not None, specifies the
    opacity of the gridlines. Is passed as the 'alpha' argument to
    ax.grid() if not None.

gridline_style (str, list, None): If not None, specifies gridline line
    style. Is passed as the 'linestyle' argument to ax.grid if not
    None.

#######################################################################
### Baseline formatting

show_baseline (bool): Whether to show the baseline at y=0. Note: the
    baseline is plotted above logo characters.

baseline_width (float >= 0, None): If not None, specifies the width of
    plotted baseline. Is passed as the 'linewidth' argument to
    ax.axhline() if not None.

baseline_color (color, None): If not None, specifies the color of the
    baseline. Is passed as the 'color' argument to ax.axhline() if not
    None.

baseline_alpha (float in [0,1], None): If not None, specifies the
    opacity of baseline. Is passed as the 'alpha' argument to
    ax.axhline() if not None.

baseline_style (str, list, None): If not None, specifies baseline line
    style. Is passed as the 'linestyle' argument to ax.axhline() if not
    None.

baseline_zorder (float, None): Specifies how in-front baseline is drawn
    relative to logo characters and other plotted objects. Larger values
    correspond to more in-frontness.

#######################################################################
### vlines formatting

vline_positions (array): A list of x positions at which to draw vertical
    lines (henceforth 'vlines'). These lines are drawn with a different
    style than gridlines to allow users to mark specific locations within
    a logo.

vline_width (float >= 0, None): If not None, specifies the width of
    plotted vlines. Is passed as the 'linewidth' argument to
    ax.axhline() if not None.

vline_color (color, None): If not None, specifies the color of the
    vlines. Is passed as the 'color' argument to ax.axhline() if not
    None.

vline_alpha (float in [0,1], None): If not None, specifies the
    opacity of the vlines. Is passed as the 'alpha' argument to
    ax.axhline() if not None.

vline_style (str, list, None): If not None, specifies vline line
    style. Is passed as the 'linestyle' argument to ax.axhline() if not
    None.

vline_zorder (float, None): Specifies how in-front vlines are drawn relative
    to logo characters and other plotted objects. Larger values correspond
    to more in-frontness.

#######################################################################
### x-axis formatting

xlim ([float, float], None): x-axis limits. Determined automatically if
    None.

xticks (array, None): Location of tick marks on x-axis. Overrides
    xtick_spacing and xtick_anchor if not None.

xtick_spacing (float, None): Spacing between x-axis tick marks.
    Tickmarks drawn at xtick_anchor + z*xtick_spacing for all integers
    if value is not None. Overrides axes_type if not None.

xtick_anchor (float): Determines positioning of xticks as described
    above.

xticklabels (array, None): Values to display below x-axis tickmarks.
    Labels are determined automatically if None.

xtick_rotation (float, None): Angle in degrees at which to draw x-axis
    tick labels. Angle is determined automatically if None.

xtick_length (float >= 0, None): Length of x-axis tick marks. Length is
    determined automatically if None.

xtick_format (str, None): Formatting string used for making x-axis
    labels. Overridden by xticklabels. Ignored if None.

xlabel (str, None): Text to display below the x-axis. Determined
    automatically if None.

#######################################################################
### y-axis formatting

show_binary_yaxis (bool, None): If True, y-axis is labeled with '+' and
    '-'. in place of numerically labeled ticks. Overrides ylim, yticks,
    and yticklabels.

ylim ([float, float], None): y-axis limits. Determined automatically if
    None.

yticks (array, None): Location of tick marks on y-axis. Overrides
    ytick_spacing and ytick_anchor if not None.

yticklabels (array, None): Values to display below y-axis tickmarks.
    Labels are determined automatically if None.

ytick_rotation (float, None): Angle in degrees at which to draw y-axis
    tick labels. Angle is determined automatically if None.

ytick_length (float >= 0, None): Length of x-axis tick marks. Length is
    determined automatically if None.

ytick_format (str, None): Formatting string used for making x-axis
    labels. Overridden by xticklabels. Ignored if None.

ylabel (str, None): Text to display below the x-axis. Determined
    automatically if None.

#######################################################################
### Other axes formatting

title (str, None): Title of plot if not None.

left_spine (bool, None): Whether to show the left axis spine. If None,
    spine choice is set by axes_type.

right_spine (bool, None): Whether to show the right axis spine. If
    None, spine choice is set by axes_type.

top_spine (bool, None): Whether to show the top axis spine. If None,
    spine choice is set by axes_type.

bottom_spine (bool, None): Whether to show the bottom axis spine. If
    None, spine choice is set by axes_type.

use_tightlayout (bool): Whether to call plt.tight_layout() after
    logo is plotted. If called, this will reformat the plot to try and
    ensure that all plotted elements are visible. Note: this will
    reformat the entire figure, not just the logo axes.

#######################################################################
### Default axes font

axes_fontfile (str, None): See font_file. Default to use for axes
    labels, axes tick labels, and title. Ignored if None.

axes_fontfamily (str, list, None): See font_family. Default to use for
    axes labels, axes tick labels, and title. Ignored if None.

axes_fontweight (str, float, None): See font_weight. Default to use for
    axes labels, axes tick labels, and title. Ignored if None.

axes_fontstyle (str, None): See font_style. Default to use for axes
    labels, axes tick labels, and title. Ignored if None.

axes_fontsize (str, float, None): Font size to be used for axes
    labels, axes tick labels, and title. Passed as 'size' parameter to
    the FontProperties constructor. From matplotlib documentation:
        "size: Either an relative value of 'xx-small', 'x-small',
        'small', 'medium', 'large', 'x-large', 'xx-large' or an
         absolute font size, e.g., 12"
    Ignored if value is None.

#######################################################################
### Tick label font

tick_fontfile (str, None): Overrides axes_fontfile for tick label
    styling if value is not None.

tick_fontfamily (str, list, None): Overrides axes_fontfamily for tick
    label styling if value is not None.

tick_fontweight (str, float, None): Overrides axes_fontweight for tick
    label styling if value is not None.

tick_fontstyle (str, None): Overrides axes_fontstyle for tick label
    styling if value is not None.

tick_fontsize (str, float, None): Overrides axes_fontsize for tick
    label styling if value is not None.

#######################################################################
### Axis label font

label_fontfile (str, None): Overrides axes_fontfile for axis label
    styling if value is not None.

label_fontfamily (str, list, None): Overrides axes_fontfamily for axis
    label styling if value is not None.

label_fontweight (str, float, None): Overrides axes_fontweight for axis
    label styling if value is not None.

label_fontstyle (str, None): Overrides axes_fontstyle for axis label
    styling if value is not None.

label_fontsize (str, float, None): Overrides axes_fontsize for axis
    label styling if value is not None.

#######################################################################
### Title font

title_fontfile (str, None): Overrides axes_fontfile for title styling
    if value is not None.

title_fontfamily (str, list, None): Overrides axes_fontfamily for title
    styling if value is not None.

title_fontweight (str, float, None): Overrides axes_fontweight for
    title label styling if value is not None.

title_fontstyle (str, None): Overrides axes_fontstyle for title
    styling if value is not None.

title_fontsize (str, float, None): Overrides axes_fontsize for title
    styling if value is not None.

#######################################################################
