diff --git a/.flake8 b/.flake8
index 152895615a78..1896dbc40ff4 100644
--- a/.flake8
+++ b/.flake8
@@ -35,7 +35,6 @@ per-file-ignores =
     lib/matplotlib/_mathtext_data.py: E203, E261
     lib/matplotlib/font_manager.py: E203, E221, E251, E501
     lib/matplotlib/mathtext.py: E221, E251
-    lib/matplotlib/rcsetup.py: E501
     lib/matplotlib/tests/test_mathtext.py: E501
     lib/matplotlib/transforms.py: E201, E202, E203
     lib/matplotlib/tri/triinterpolate.py: E201, E221
diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py
index dbb77e4052ae..c3453bfac73f 100644
--- a/lib/matplotlib/__init__.py
+++ b/lib/matplotlib/__init__.py
@@ -139,7 +139,7 @@
 from matplotlib.cbook import (
     MatplotlibDeprecationWarning, dedent, get_label, sanitize_sequence)
 from matplotlib.cbook import mplDeprecation  # deprecated
-from matplotlib.rcsetup import defaultParams, validate_backend, cycler
+from matplotlib.rcsetup import validate_backend, cycler
 
 import numpy
 
@@ -614,7 +614,8 @@ def get_cachedir():
     return _get_config_or_cache_dir(_get_xdg_cache_dir())
 
 
-def _get_data_path():
+@_logged_cached('matplotlib data path: %s')
+def get_data_path():
     """Return the path to matplotlib data."""
 
     if 'MATPLOTLIBDATA' in os.environ:
@@ -655,13 +656,6 @@ def get_candidate_paths():
     raise RuntimeError('Could not find the matplotlib data files')
 
 
-@_logged_cached('matplotlib data path: %s')
-def get_data_path():
-    if defaultParams['datapath'][0] is None:
-        defaultParams['datapath'][0] = _get_data_path()
-    return defaultParams['datapath'][0]
-
-
 @cbook.deprecated("3.1")
 def get_py2exe_datafiles():
     data_path = Path(get_data_path())
@@ -749,9 +743,7 @@ class RcParams(MutableMapping, dict):
     :ref:`customizing-with-matplotlibrc-files`
     """
 
-    validate = {key: converter
-                for key, (default, converter) in defaultParams.items()
-                if key not in _all_deprecated}
+    validate = rcsetup._validators
 
     # validate values on the way in
     def __init__(self, *args, **kwargs):
@@ -807,6 +799,9 @@ def __getitem__(self, key):
                 from matplotlib import pyplot as plt
                 plt.switch_backend(rcsetup._auto_backend_sentinel)
 
+        elif key == "datapath":
+            return get_data_path()
+
         return dict.__getitem__(self, key)
 
     def __repr__(self):
@@ -916,7 +911,7 @@ def _rc_params_in_file(fname, fail_on_error=False):
     config = RcParams()
 
     for key, (val, line, line_no) in rc_temp.items():
-        if key in defaultParams:
+        if key in rcsetup._validators:
             if fail_on_error:
                 config[key] = val  # try to convert to proper type or raise
             else:
@@ -962,11 +957,8 @@ def rc_params_from_file(fname, fail_on_error=False, use_default_template=True):
     if not use_default_template:
         return config_from_file
 
-    iter_params = defaultParams.items()
     with cbook._suppress_matplotlib_deprecation_warning():
-        config = RcParams([(key, default) for key, (default, _) in iter_params
-                           if key not in _all_deprecated])
-    config.update(config_from_file)
+        config = RcParams({**rcParamsDefault, **config_from_file})
 
     if config['datapath'] is None:
         config['datapath'] = get_data_path()
@@ -984,15 +976,28 @@ def rc_params_from_file(fname, fail_on_error=False, use_default_template=True):
     return config
 
 
-# this is the instance used by the matplotlib classes
-rcParams = rc_params()
+# When constructing the global instances, we need to perform certain updates
+# by explicitly calling the superclass (dict.update, dict.items) to avoid
+# triggering resolution of _auto_backend_sentinel.
 
+rcParamsDefault = _rc_params_in_file(
+    cbook._get_data_path("matplotlibrc"), fail_on_error=True)
+with cbook._suppress_matplotlib_deprecation_warning():
+    dict.update(rcParamsDefault, rcsetup._hardcoded_defaults)
+
+rcParams = RcParams()  # The global instance.
+with cbook._suppress_matplotlib_deprecation_warning():
+    dict.update(rcParams, dict.items(rcParamsDefault))
+    dict.update(rcParams, _rc_params_in_file(matplotlib_fname()))
 
 with cbook._suppress_matplotlib_deprecation_warning():
+    defaultParams = rcsetup.defaultParams = {  # Left only for backcompat.
+        # We want to resolve deprecated rcParams, but not backend...
+        key: [(rcsetup._auto_backend_sentinel if key == "backend" else
+               rcParamsDefault[key]),
+              validator]
+        for key, validator in rcsetup._validators.items()}
     rcParamsOrig = RcParams(rcParams.copy())
-    rcParamsDefault = RcParams([(key, default) for key, (default, converter) in
-                                defaultParams.items()
-                                if key not in _all_deprecated])
 
 if rcParams['axes.formatter.use_locale']:
     locale.setlocale(locale.LC_ALL, '')
diff --git a/lib/matplotlib/cbook/__init__.py b/lib/matplotlib/cbook/__init__.py
index f0e018c8068e..197391f473d4 100644
--- a/lib/matplotlib/cbook/__init__.py
+++ b/lib/matplotlib/cbook/__init__.py
@@ -439,7 +439,7 @@ def get_sample_data(fname, asfileobj=True):
 
     If the filename ends in .gz, the file is implicitly ungzipped.
     """
-    path = Path(matplotlib._get_data_path(), 'sample_data', fname)
+    path = _get_data_path('sample_data', fname)
     if asfileobj:
         suffix = path.suffix.lower()
         if suffix == '.gz':
diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py
index 26d54f61d0c1..86cf3b3535ea 100644
--- a/lib/matplotlib/rcsetup.py
+++ b/lib/matplotlib/rcsetup.py
@@ -630,7 +630,8 @@ def validate_sketch(s):
     elif isinstance(s, (list, tuple)):
         result = tuple([float(v) for v in s])
     if len(result) != 3:
-        raise ValueError("path.sketch must be a tuple (scale, length, randomness)")
+        raise ValueError(
+            "path.sketch must be a tuple (scale, length, randomness)")
     return result
 
 
@@ -809,21 +810,18 @@ def cycler(*args, **kwargs):
 def validate_cycler(s):
     """Return a Cycler object from a string repr or the object itself."""
     if isinstance(s, str):
+        # TODO: We might want to rethink this...
+        # While I think I have it quite locked down, it is execution of
+        # arbitrary code without sanitation.
+        # Combine this with the possibility that rcparams might come from the
+        # internet (future plans), this could be downright dangerous.
+        # I locked it down by only having the 'cycler()' function available.
+        # UPDATE: Partly plugging a security hole.
+        # I really should have read this:
+        # http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
+        # We should replace this eval with a combo of PyParsing and
+        # ast.literal_eval()
         try:
-            # TODO: We might want to rethink this...
-            # While I think I have it quite locked down,
-            # it is execution of arbitrary code without
-            # sanitation.
-            # Combine this with the possibility that rcparams
-            # might come from the internet (future plans), this
-            # could be downright dangerous.
-            # I locked it down by only having the 'cycler()' function
-            # available.
-            # UPDATE: Partly plugging a security hole.
-            # I really should have read this:
-            # http://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html
-            # We should replace this eval with a combo of PyParsing and
-            # ast.literal_eval()
             if '.__' in s.replace(' ', ''):
                 raise ValueError("'%s' seems to have dunder methods. Raising"
                                  " an exception for your safety")
@@ -951,484 +949,464 @@ def _validate_linestyle(ls):
                          "sequence.".format(ls))
 
 
-validate_axes_titlelocation = ValidateInStrings('axes.titlelocation', ['left', 'center', 'right'])
+validate_axes_titlelocation = ValidateInStrings(
+    'axes.titlelocation', ['left', 'center', 'right'])
 
-# a map from key -> value, converter
-defaultParams = {
-    'backend':           [_auto_backend_sentinel, validate_backend],
-    'backend_fallback':  [True, validate_bool],
-    'webagg.port':       [8988, validate_int],
-    'webagg.address':    ['127.0.0.1', validate_webagg_address],
-    'webagg.open_in_browser': [True, validate_bool],
-    'webagg.port_retries': [50, validate_int],
-    'toolbar':           ['toolbar2', validate_toolbar],
-    'datapath':          [None, validate_any],  # see _get_data_path_cached
-    'interactive':       [False, validate_bool],
-    'timezone':          ['UTC', validate_string],
+
+_validators = {  # key -> validator
+    'backend':           validate_backend,
+    'backend_fallback':  validate_bool,
+    'webagg.port':       validate_int,
+    'webagg.address':    validate_webagg_address,
+    'webagg.open_in_browser': validate_bool,
+    'webagg.port_retries': validate_int,
+    'toolbar':           validate_toolbar,
+    'datapath':          validate_any,  # see _get_data_path_cached
+    'interactive':       validate_bool,
+    'timezone':          validate_string,
 
     # the verbosity setting
-    'verbose.level': ['silent', _validate_verbose],
-    'verbose.fileo': ['sys.stdout', validate_string],
+    'verbose.level': _validate_verbose,
+    'verbose.fileo': validate_string,
 
     # line props
-    'lines.linewidth':       [1.5, validate_float],  # line width in points
-    'lines.linestyle':       ['-', _validate_linestyle],  # solid line
-    'lines.color':           ['C0', validate_color],  # first color in color cycle
-    'lines.marker':          ['None', validate_string],  # marker name
-    'lines.markerfacecolor': ['auto', validate_color_or_auto],  # default color
-    'lines.markeredgecolor': ['auto', validate_color_or_auto],  # default color
-    'lines.markeredgewidth': [1.0, validate_float],
-    'lines.markersize':      [6, validate_float],    # markersize, in points
-    'lines.antialiased':     [True, validate_bool],  # antialiased (no jaggies)
-    'lines.dash_joinstyle':  ['round', validate_joinstyle],
-    'lines.solid_joinstyle': ['round', validate_joinstyle],
-    'lines.dash_capstyle':   ['butt', validate_capstyle],
-    'lines.solid_capstyle':  ['projecting', validate_capstyle],
-    'lines.dashed_pattern':  [[3.7, 1.6], validate_nseq_float(allow_none=True)],
-    'lines.dashdot_pattern': [[6.4, 1.6, 1, 1.6],
-                              validate_nseq_float(allow_none=True)],
-    'lines.dotted_pattern':  [[1, 1.65], validate_nseq_float(allow_none=True)],
-    'lines.scale_dashes':  [True, validate_bool],
+    'lines.linewidth':       validate_float,  # line width in points
+    'lines.linestyle':       _validate_linestyle,  # solid line
+    'lines.color':           validate_color,  # first color in color cycle
+    'lines.marker':          validate_string,  # marker name
+    'lines.markerfacecolor': validate_color_or_auto,  # default color
+    'lines.markeredgecolor': validate_color_or_auto,  # default color
+    'lines.markeredgewidth': validate_float,
+    'lines.markersize':      validate_float,  # markersize, in points
+    'lines.antialiased':     validate_bool,  # antialiased (no jaggies)
+    'lines.dash_joinstyle':  validate_joinstyle,
+    'lines.solid_joinstyle': validate_joinstyle,
+    'lines.dash_capstyle':   validate_capstyle,
+    'lines.solid_capstyle':  validate_capstyle,
+    'lines.dashed_pattern':  validate_nseq_float(allow_none=True),
+    'lines.dashdot_pattern': validate_nseq_float(allow_none=True),
+    'lines.dotted_pattern':  validate_nseq_float(allow_none=True),
+    'lines.scale_dashes':    validate_bool,
 
     # marker props
-    'markers.fillstyle': ['full', validate_fillstyle],
+    'markers.fillstyle': validate_fillstyle,
 
     ## patch props
-    'patch.linewidth':   [1.0, validate_float],     # line width in points
-    'patch.edgecolor':   ['black', validate_color],
-    'patch.force_edgecolor': [False, validate_bool],
-    'patch.facecolor':   ['C0', validate_color],    # first color in cycle
-    'patch.antialiased': [True, validate_bool],     # antialiased (no jaggies)
+    'patch.linewidth': validate_float,  # line width in points
+    'patch.edgecolor': validate_color,
+    'patch.force_edgecolor': validate_bool,
+    'patch.facecolor': validate_color,  # first color in cycle
+    'patch.antialiased': validate_bool,  # antialiased (no jaggies)
 
     ## hatch props
-    'hatch.color': ['black', validate_color],
-    'hatch.linewidth': [1.0, validate_float],
+    'hatch.color': validate_color,
+    'hatch.linewidth': validate_float,
 
     ## Histogram properties
-    'hist.bins': [10, validate_hist_bins],
+    'hist.bins': validate_hist_bins,
 
     ## Boxplot properties
-    'boxplot.notch': [False, validate_bool],
-    'boxplot.vertical': [True, validate_bool],
-    'boxplot.whiskers': [1.5, validate_whiskers],
-    'boxplot.bootstrap': [None, validate_int_or_None],
-    'boxplot.patchartist': [False, validate_bool],
-    'boxplot.showmeans': [False, validate_bool],
-    'boxplot.showcaps': [True, validate_bool],
-    'boxplot.showbox': [True, validate_bool],
-    'boxplot.showfliers': [True, validate_bool],
-    'boxplot.meanline': [False, validate_bool],
-
-    'boxplot.flierprops.color': ['black', validate_color],
-    'boxplot.flierprops.marker': ['o', validate_string],
-    'boxplot.flierprops.markerfacecolor': ['none', validate_color_or_auto],
-    'boxplot.flierprops.markeredgecolor': ['black', validate_color],
-    'boxplot.flierprops.markeredgewidth': [1.0, validate_float],
-    'boxplot.flierprops.markersize': [6, validate_float],
-    'boxplot.flierprops.linestyle': ['none', _validate_linestyle],
-    'boxplot.flierprops.linewidth': [1.0, validate_float],
-
-    'boxplot.boxprops.color': ['black', validate_color],
-    'boxplot.boxprops.linewidth': [1.0, validate_float],
-    'boxplot.boxprops.linestyle': ['-', _validate_linestyle],
-
-    'boxplot.whiskerprops.color': ['black', validate_color],
-    'boxplot.whiskerprops.linewidth': [1.0, validate_float],
-    'boxplot.whiskerprops.linestyle': ['-', _validate_linestyle],
-
-    'boxplot.capprops.color': ['black', validate_color],
-    'boxplot.capprops.linewidth': [1.0, validate_float],
-    'boxplot.capprops.linestyle': ['-', _validate_linestyle],
-
-    'boxplot.medianprops.color': ['C1', validate_color],
-    'boxplot.medianprops.linewidth': [1.0, validate_float],
-    'boxplot.medianprops.linestyle': ['-', _validate_linestyle],
-
-    'boxplot.meanprops.color': ['C2', validate_color],
-    'boxplot.meanprops.marker': ['^', validate_string],
-    'boxplot.meanprops.markerfacecolor': ['C2', validate_color],
-    'boxplot.meanprops.markeredgecolor': ['C2', validate_color],
-    'boxplot.meanprops.markersize': [6, validate_float],
-    'boxplot.meanprops.linestyle': ['--', _validate_linestyle],
-    'boxplot.meanprops.linewidth': [1.0, validate_float],
+    'boxplot.notch': validate_bool,
+    'boxplot.vertical': validate_bool,
+    'boxplot.whiskers': validate_whiskers,
+    'boxplot.bootstrap': validate_int_or_None,
+    'boxplot.patchartist': validate_bool,
+    'boxplot.showmeans': validate_bool,
+    'boxplot.showcaps': validate_bool,
+    'boxplot.showbox': validate_bool,
+    'boxplot.showfliers': validate_bool,
+    'boxplot.meanline': validate_bool,
+
+    'boxplot.flierprops.color': validate_color,
+    'boxplot.flierprops.marker': validate_string,
+    'boxplot.flierprops.markerfacecolor': validate_color_or_auto,
+    'boxplot.flierprops.markeredgecolor': validate_color,
+    'boxplot.flierprops.markeredgewidth': validate_float,
+    'boxplot.flierprops.markersize': validate_float,
+    'boxplot.flierprops.linestyle': _validate_linestyle,
+    'boxplot.flierprops.linewidth': validate_float,
+
+    'boxplot.boxprops.color': validate_color,
+    'boxplot.boxprops.linewidth': validate_float,
+    'boxplot.boxprops.linestyle': _validate_linestyle,
+
+    'boxplot.whiskerprops.color': validate_color,
+    'boxplot.whiskerprops.linewidth': validate_float,
+    'boxplot.whiskerprops.linestyle': _validate_linestyle,
+
+    'boxplot.capprops.color': validate_color,
+    'boxplot.capprops.linewidth': validate_float,
+    'boxplot.capprops.linestyle': _validate_linestyle,
+
+    'boxplot.medianprops.color': validate_color,
+    'boxplot.medianprops.linewidth': validate_float,
+    'boxplot.medianprops.linestyle': _validate_linestyle,
+
+    'boxplot.meanprops.color': validate_color,
+    'boxplot.meanprops.marker': validate_string,
+    'boxplot.meanprops.markerfacecolor': validate_color,
+    'boxplot.meanprops.markeredgecolor': validate_color,
+    'boxplot.meanprops.markersize': validate_float,
+    'boxplot.meanprops.linestyle': _validate_linestyle,
+    'boxplot.meanprops.linewidth': validate_float,
 
     ## font props
-    'font.family':     [['sans-serif'], validate_stringlist],  # used by text object
-    'font.style':      ['normal', validate_string],
-    'font.variant':    ['normal', validate_string],
-    'font.stretch':    ['normal', validate_string],
-    'font.weight':     ['normal', validate_string],
-    'font.size':       [10, validate_float],      # Base font size in points
-    'font.serif':      [['DejaVu Serif', 'Bitstream Vera Serif',
-                         'Computer Modern Roman',
-                         'New Century Schoolbook', 'Century Schoolbook L',
-                         'Utopia', 'ITC Bookman', 'Bookman',
-                         'Nimbus Roman No9 L', 'Times New Roman',
-                         'Times', 'Palatino', 'Charter', 'serif'],
-                        validate_stringlist],
-    'font.sans-serif': [['DejaVu Sans', 'Bitstream Vera Sans',
-                         'Computer Modern Sans Serif',
-                         'Lucida Grande', 'Verdana', 'Geneva', 'Lucid',
-                         'Arial', 'Helvetica', 'Avant Garde', 'sans-serif'],
-                        validate_stringlist],
-    'font.cursive':    [['Apple Chancery', 'Textile', 'Zapf Chancery',
-                         'Sand', 'Script MT', 'Felipa', 'cursive'],
-                        validate_stringlist],
-    'font.fantasy':    [['Comic Sans MS', 'Chicago', 'Charcoal', 'Impact',
-                         'Western', 'Humor Sans', 'xkcd', 'fantasy'],
-                        validate_stringlist],
-    'font.monospace':  [['DejaVu Sans Mono', 'Bitstream Vera Sans Mono',
-                         'Computer Modern Typewriter',
-                         'Andale Mono', 'Nimbus Mono L', 'Courier New',
-                         'Courier', 'Fixed', 'Terminal', 'monospace'],
-                        validate_stringlist],
+    'font.family':     validate_stringlist,  # used by text object
+    'font.style':      validate_string,
+    'font.variant':    validate_string,
+    'font.stretch':    validate_string,
+    'font.weight':     validate_string,
+    'font.size':       validate_float,  # Base font size in points
+    'font.serif':      validate_stringlist,
+    'font.sans-serif': validate_stringlist,
+    'font.cursive':    validate_stringlist,
+    'font.fantasy':    validate_stringlist,
+    'font.monospace':  validate_stringlist,
 
     # text props
-    'text.color':          ['black', validate_color],
-    'text.usetex':         [False, validate_bool],
-    'text.latex.unicode':  [True, validate_bool],
-    'text.latex.preamble': ['', _validate_tex_preamble],
-    'text.latex.preview':  [False, validate_bool],
-    'text.hinting':        ['auto', validate_hinting],
-    'text.hinting_factor': [8, validate_int],
-    'text.antialiased':    [True, validate_bool],
-
-    'mathtext.cal':            ['cursive', validate_font_properties],
-    'mathtext.rm':             ['sans', validate_font_properties],
-    'mathtext.tt':             ['monospace', validate_font_properties],
-    'mathtext.it':             ['sans:italic', validate_font_properties],
-    'mathtext.bf':             ['sans:bold', validate_font_properties],
-    'mathtext.sf':             ['sans', validate_font_properties],
-    'mathtext.fontset':        ['dejavusans', validate_fontset],
-    'mathtext.default':        ['it', validate_mathtext_default],
-    'mathtext.fallback_to_cm': [True, validate_bool],
-
-    'image.aspect':        ['equal', validate_aspect],  # equal, auto, a number
-    'image.interpolation': ['antialiased', validate_string],
-    'image.cmap':          ['viridis', validate_string],  # gray, jet, etc.
-    'image.lut':           [256, validate_int],  # lookup table
-    'image.origin':        ['upper',
-                            ValidateInStrings('image.origin', ['upper', 'lower'])],
-    'image.resample':      [True, validate_bool],
+    'text.color':          validate_color,
+    'text.usetex':         validate_bool,
+    'text.latex.unicode':  validate_bool,
+    'text.latex.preamble': _validate_tex_preamble,
+    'text.latex.preview':  validate_bool,
+    'text.hinting':        validate_hinting,
+    'text.hinting_factor': validate_int,
+    'text.antialiased':    validate_bool,
+
+    'mathtext.cal':            validate_font_properties,
+    'mathtext.rm':             validate_font_properties,
+    'mathtext.tt':             validate_font_properties,
+    'mathtext.it':             validate_font_properties,
+    'mathtext.bf':             validate_font_properties,
+    'mathtext.sf':             validate_font_properties,
+    'mathtext.fontset':        validate_fontset,
+    'mathtext.default':        validate_mathtext_default,
+    'mathtext.fallback_to_cm': validate_bool,
+
+    'image.aspect':        validate_aspect,  # equal, auto, a number
+    'image.interpolation': validate_string,
+    'image.cmap':          validate_string,  # gray, jet, etc.
+    'image.lut':           validate_int,  # lookup table
+    'image.origin':        ValidateInStrings('image.origin',
+                                             ['upper', 'lower']),
+    'image.resample':      validate_bool,
     # Specify whether vector graphics backends will combine all images on a
     # set of axes into a single composite image
-    'image.composite_image': [True, validate_bool],
+    'image.composite_image': validate_bool,
 
     # contour props
-    'contour.negative_linestyle': ['dashed', _validate_linestyle],
-    'contour.corner_mask':        [True, validate_bool],
+    'contour.negative_linestyle': _validate_linestyle,
+    'contour.corner_mask':        validate_bool,
 
     # errorbar props
-    'errorbar.capsize':      [0, validate_float],
+    'errorbar.capsize':      validate_float,
 
     # axes props
-    'axes.axisbelow':        ['line', validate_axisbelow],
-    'axes.facecolor':        ['white', validate_color],  # background color
-    'axes.edgecolor':        ['black', validate_color],  # edge color
-    'axes.linewidth':        [0.8, validate_float],  # edge linewidth
-
-    'axes.spines.left':      [True, validate_bool],  # Set visibility of axes
-    'axes.spines.right':     [True, validate_bool],  # 'spines', the lines
-    'axes.spines.bottom':    [True, validate_bool],  # around the chart
-    'axes.spines.top':       [True, validate_bool],  # denoting data boundary
-
-    'axes.titlesize':        ['large', validate_fontsize],  # fontsize of the
-                                                            # axes title
-    'axes.titlelocation':    ['center', validate_axes_titlelocation],  # alignment of axes title
-    'axes.titleweight':      ['normal', validate_string],  # font weight of axes title
-    'axes.titlecolor':       ['auto', validate_color_or_auto],  # font color of axes title
-    'axes.titlepad':         [6.0, validate_float],  # pad from axes top to title in points
-    'axes.grid':             [False, validate_bool],   # display grid or not
-    'axes.grid.which':       ['major', validate_axis_locator],  # set whether the gid are by
-                                                                # default draw on 'major'
-                                                                # 'minor' or 'both' kind of
-                                                                # axis locator
-    'axes.grid.axis':        ['both', validate_grid_axis],  # grid type:
-                                                            # 'x', 'y', or 'both'
-    'axes.labelsize':        ['medium', validate_fontsize],  # fontsize of the
-                                                             # x any y labels
-    'axes.labelpad':         [4.0, validate_float],  # space between label and axis
-    'axes.labelweight':      ['normal', validate_string],  # fontsize of the x any y labels
-    'axes.labelcolor':       ['black', validate_color],    # color of axis label
-    'axes.formatter.limits': [[-7, 7], validate_nseq_int(2)],
+    'axes.axisbelow':        validate_axisbelow,
+    'axes.facecolor':        validate_color,  # background color
+    'axes.edgecolor':        validate_color,  # edge color
+    'axes.linewidth':        validate_float,  # edge linewidth
+
+    'axes.spines.left':      validate_bool,  # Set visibility of axes
+    'axes.spines.right':     validate_bool,  # 'spines', the lines
+    'axes.spines.bottom':    validate_bool,  # around the chart
+    'axes.spines.top':       validate_bool,  # denoting data boundary
+
+    'axes.titlesize':     validate_fontsize,  # axes title fontsize
+    'axes.titlelocation': validate_axes_titlelocation,  # axes title alignment
+    'axes.titleweight':   validate_string,  # axes title font weight
+    'axes.titlecolor':    validate_color_or_auto,  # axes title font color
+    'axes.titlepad':      validate_float,  # axes-top-to-title pad, in points
+    'axes.grid':             validate_bool,  # display grid or not
+    'axes.grid.which':       validate_axis_locator,  # whether the grid are by
+                                                     # default drawn on 'major'
+                                                     # 'minor' or 'both' axis
+                                                     # locator
+    'axes.grid.axis':        validate_grid_axis,  # grid type: 'x', 'y', 'both'
+    'axes.labelsize':        validate_fontsize,  # fontsize of the x/y labels
+    'axes.labelpad':         validate_float,  # space between label and axis
+    'axes.labelweight':      validate_string,  # fontsize of the x any y labels
+    'axes.labelcolor':       validate_color,  # color of axis label
+    'axes.formatter.limits': validate_nseq_int(2),
                                # use scientific notation if log10
                                # of the axis range is smaller than the
                                # first or larger than the second
-    'axes.formatter.use_locale': [False, validate_bool],
+    'axes.formatter.use_locale': validate_bool,
                                # Use the current locale to format ticks
-    'axes.formatter.use_mathtext': [False, validate_bool],
-    'axes.formatter.min_exponent': [0, validate_int],  # minimum exponent to format in scientific notation
-    'axes.formatter.useoffset': [True, validate_bool],
-    'axes.formatter.offset_threshold': [4, validate_int],
-    'axes.unicode_minus': [True, validate_bool],
+    'axes.formatter.use_mathtext': validate_bool,
+    'axes.formatter.min_exponent': validate_int,  # minimum exponent to format
+                                                  # in scientific notation
+    'axes.formatter.useoffset': validate_bool,
+    'axes.formatter.offset_threshold': validate_int,
+    'axes.unicode_minus': validate_bool,
     # This entry can be either a cycler object or a
     # string repr of a cycler-object, which gets eval()'ed
     # to create the object.
-    'axes.prop_cycle': [
-        ccycler('color',
-                ['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728',
-                 '#9467bd', '#8c564b', '#e377c2', '#7f7f7f',
-                 '#bcbd22', '#17becf']),
-        validate_cycler],
+    'axes.prop_cycle': validate_cycler,
     # If 'data', axes limits are set close to the data.
     # If 'round_numbers' axes limits are set to the nearest round numbers.
-    'axes.autolimit_mode': [
-        'data',
-        ValidateInStrings('autolimit_mode', ['data', 'round_numbers'])],
-    'axes.xmargin': [0.05, ValidateInterval(0, 1,
-                                            closedmin=True,
-                                            closedmax=True)],  # margin added to xaxis
-    'axes.ymargin': [0.05, ValidateInterval(0, 1,
-                                            closedmin=True,
-                                            closedmax=True)],  # margin added to yaxis
-
-    'polaraxes.grid': [True, validate_bool],  # display polar grid or
-                                                     # not
-    'axes3d.grid': [True, validate_bool],  # display 3d grid
+    'axes.autolimit_mode': ValidateInStrings('autolimit_mode',
+                                             ['data', 'round_numbers']),
+    'axes.xmargin': ValidateInterval(0, 1,
+                                     closedmin=True,
+                                     closedmax=True),  # margin added to xaxis
+    'axes.ymargin': ValidateInterval(0, 1,
+                                     closedmin=True,
+                                     closedmax=True),  # margin added to yaxis
+
+    'polaraxes.grid': validate_bool,  # display polar grid or not
+    'axes3d.grid': validate_bool,  # display 3d grid
 
     # scatter props
-    'scatter.marker': ['o', validate_string],
-    'scatter.edgecolors': ['face', validate_string],
+    'scatter.marker': validate_string,
+    'scatter.edgecolors': validate_string,
 
     # TODO validate that these are valid datetime format strings
-    'date.autoformatter.year': ['%Y', validate_string],
-    'date.autoformatter.month': ['%Y-%m', validate_string],
-    'date.autoformatter.day': ['%Y-%m-%d', validate_string],
-    'date.autoformatter.hour': ['%m-%d %H', validate_string],
-    'date.autoformatter.minute': ['%d %H:%M', validate_string],
-    'date.autoformatter.second': ['%H:%M:%S', validate_string],
-    'date.autoformatter.microsecond': ['%M:%S.%f', validate_string],
+    'date.autoformatter.year': validate_string,
+    'date.autoformatter.month': validate_string,
+    'date.autoformatter.day': validate_string,
+    'date.autoformatter.hour': validate_string,
+    'date.autoformatter.minute': validate_string,
+    'date.autoformatter.second': validate_string,
+    'date.autoformatter.microsecond': validate_string,
 
     #legend properties
-    'legend.fancybox': [True, validate_bool],
-    'legend.loc': ['best', validate_legend_loc],
+    'legend.fancybox': validate_bool,
+    'legend.loc': validate_legend_loc,
     # the number of points in the legend line
-    'legend.numpoints': [1, validate_int],
+    'legend.numpoints': validate_int,
     # the number of points in the legend line for scatter
-    'legend.scatterpoints': [1, validate_int],
-    'legend.fontsize': ['medium', validate_fontsize],
-    'legend.title_fontsize': [None, validate_fontsize_None],
+    'legend.scatterpoints': validate_int,
+    'legend.fontsize': validate_fontsize,
+    'legend.title_fontsize': validate_fontsize_None,
      # the relative size of legend markers vs. original
-    'legend.markerscale': [1.0, validate_float],
-    'legend.shadow': [False, validate_bool],
+    'legend.markerscale': validate_float,
+    'legend.shadow': validate_bool,
      # whether or not to draw a frame around legend
-    'legend.frameon': [True, validate_bool],
+    'legend.frameon': validate_bool,
      # alpha value of the legend frame
-    'legend.framealpha': [0.8, validate_float_or_None],
+    'legend.framealpha': validate_float_or_None,
 
     ## the following dimensions are in fraction of the font size
-    'legend.borderpad': [0.4, validate_float],  # units are fontsize
+    'legend.borderpad': validate_float,  # units are fontsize
     # the vertical space between the legend entries
-    'legend.labelspacing': [0.5, validate_float],
+    'legend.labelspacing': validate_float,
     # the length of the legend lines
-    'legend.handlelength': [2., validate_float],
+    'legend.handlelength': validate_float,
     # the length of the legend lines
-    'legend.handleheight': [0.7, validate_float],
+    'legend.handleheight': validate_float,
     # the space between the legend line and legend text
-    'legend.handletextpad': [.8, validate_float],
+    'legend.handletextpad': validate_float,
     # the border between the axes and legend edge
-    'legend.borderaxespad': [0.5, validate_float],
+    'legend.borderaxespad': validate_float,
     # the border between the axes and legend edge
-    'legend.columnspacing': [2., validate_float],
-    'legend.facecolor': ['inherit', validate_color_or_inherit],
-    'legend.edgecolor': ['0.8', validate_color_or_inherit],
+    'legend.columnspacing': validate_float,
+    'legend.facecolor': validate_color_or_inherit,
+    'legend.edgecolor': validate_color_or_inherit,
 
     # tick properties
-    'xtick.top':         [False, validate_bool],   # draw ticks on the top side
-    'xtick.bottom':      [True, validate_bool],   # draw ticks on the bottom side
-    'xtick.labeltop':    [False, validate_bool],  # draw label on the top
-    'xtick.labelbottom': [True, validate_bool],  # draw label on the bottom
-    'xtick.major.size':  [3.5, validate_float],    # major xtick size in points
-    'xtick.minor.size':  [2, validate_float],    # minor xtick size in points
-    'xtick.major.width': [0.8, validate_float],  # major xtick width in points
-    'xtick.minor.width': [0.6, validate_float],  # minor xtick width in points
-    'xtick.major.pad':   [3.5, validate_float],    # distance to label in points
-    'xtick.minor.pad':   [3.4, validate_float],    # distance to label in points
-    'xtick.color':       ['black', validate_color],  # color of the xtick labels
-    'xtick.minor.visible':   [False, validate_bool],    # visibility of the x axis minor ticks
-    'xtick.minor.top':   [True, validate_bool],  # draw x axis top minor ticks
-    'xtick.minor.bottom':    [True, validate_bool],    # draw x axis bottom minor ticks
-    'xtick.major.top':   [True, validate_bool],  # draw x axis top major ticks
-    'xtick.major.bottom':    [True, validate_bool],    # draw x axis bottom major ticks
-
-    # fontsize of the xtick labels
-    'xtick.labelsize':   ['medium', validate_fontsize],
-    'xtick.direction':   ['out', validate_string],            # direction of xticks
-    'xtick.alignment': ["center", _validate_alignment],
-
-    'ytick.left':        [True, validate_bool],  # draw ticks on the left side
-    'ytick.right':       [False, validate_bool],  # draw ticks on the right side
-    'ytick.labelleft':   [True, validate_bool],  # draw tick labels on the left side
-    'ytick.labelright':  [False, validate_bool],  # draw tick labels on the right side
-    'ytick.major.size':  [3.5, validate_float],     # major ytick size in points
-    'ytick.minor.size':  [2, validate_float],     # minor ytick size in points
-    'ytick.major.width': [0.8, validate_float],   # major ytick width in points
-    'ytick.minor.width': [0.6, validate_float],   # minor ytick width in points
-    'ytick.major.pad':   [3.5, validate_float],     # distance to label in points
-    'ytick.minor.pad':   [3.4, validate_float],     # distance to label in points
-    'ytick.color':       ['black', validate_color],   # color of the ytick labels
-    'ytick.minor.visible':   [False, validate_bool],    # visibility of the y axis minor ticks
-    'ytick.minor.left':   [True, validate_bool],  # draw y axis left minor ticks
-    'ytick.minor.right':    [True, validate_bool],    # draw y axis right minor ticks
-    'ytick.major.left':   [True, validate_bool],  # draw y axis left major ticks
-    'ytick.major.right':    [True, validate_bool],    # draw y axis right major ticks
-
-    # fontsize of the ytick labels
-    'ytick.labelsize':   ['medium', validate_fontsize],
-    'ytick.direction':   ['out', validate_string],            # direction of yticks
-    'ytick.alignment': ["center_baseline", _validate_alignment],
-
-    'grid.color':        ['#b0b0b0', validate_color],  # grid color
-    'grid.linestyle':    ['-', _validate_linestyle],  # solid
-    'grid.linewidth':    [0.8, validate_float],     # in points
-    'grid.alpha':        [1.0, validate_float],
+    'xtick.top':           validate_bool,   # draw ticks on the top
+    'xtick.bottom':        validate_bool,   # draw ticks on the bottom
+    'xtick.labeltop':      validate_bool,   # draw label on the top
+    'xtick.labelbottom':   validate_bool,   # draw label on the bottom
+    'xtick.major.size':    validate_float,  # major xtick size in points
+    'xtick.minor.size':    validate_float,  # minor xtick size in points
+    'xtick.major.width':   validate_float,  # major xtick width in points
+    'xtick.minor.width':   validate_float,  # minor xtick width in points
+    'xtick.major.pad':     validate_float,  # distance to label in points
+    'xtick.minor.pad':     validate_float,  # distance to label in points
+    'xtick.color':         validate_color,  # color of the xtick labels
+    'xtick.minor.visible': validate_bool,   # visibility of the minor xticks
+    'xtick.minor.top':     validate_bool,   # draw x axis top minor ticks
+    'xtick.minor.bottom':  validate_bool,   # draw x axis bottom minor ticks
+    'xtick.major.top':     validate_bool,   # draw x axis top major ticks
+    'xtick.major.bottom':  validate_bool,   # draw x axis bottom major ticks
+    'xtick.labelsize': validate_fontsize,   # fontsize of the xtick labels
+    'xtick.direction': validate_string,     # direction of xticks
+    'xtick.alignment': _validate_alignment,
+
+    'ytick.left':          validate_bool,   # draw ticks on the left
+    'ytick.right':         validate_bool,   # draw ticks on the right
+    'ytick.labelleft':     validate_bool,   # draw tick labels on the left
+    'ytick.labelright':    validate_bool,   # draw tick labels on the right
+    'ytick.major.size':    validate_float,  # major ytick size in points
+    'ytick.minor.size':    validate_float,  # minor ytick size in points
+    'ytick.major.width':   validate_float,  # major ytick width in points
+    'ytick.minor.width':   validate_float,  # minor ytick width in points
+    'ytick.major.pad':     validate_float,  # distance to label in points
+    'ytick.minor.pad':     validate_float,  # distance to label in points
+    'ytick.color':         validate_color,  # color of the ytick labels
+    'ytick.minor.visible': validate_bool,   # visibility of the minor yticks
+    'ytick.minor.left':    validate_bool,   # draw y axis left minor ticks
+    'ytick.minor.right':   validate_bool,   # draw y axis right minor ticks
+    'ytick.major.left':    validate_bool,   # draw y axis left major ticks
+    'ytick.major.right':   validate_bool,   # draw y axis right major ticks
+    'ytick.labelsize': validate_fontsize,   # fontsize of the ytick labels
+    'ytick.direction': validate_string,     # direction of yticks
+    'ytick.alignment': _validate_alignment,
+
+    'grid.color':     validate_color,  # grid color
+    'grid.linestyle': _validate_linestyle,  # solid
+    'grid.linewidth': validate_float,  # in points
+    'grid.alpha':     validate_float,
 
     ## figure props
     # figure title
-    'figure.titlesize':   ['large', validate_fontsize],
-    'figure.titleweight': ['normal', validate_string],
+    'figure.titlesize':   validate_fontsize,
+    'figure.titleweight': validate_string,
 
     # figure size in inches: width by height
-    'figure.figsize':    [[6.4, 4.8], validate_nseq_float(2)],
-    'figure.dpi':        [100, validate_float],  # DPI
-    'figure.facecolor':  ['white', validate_color],
-    'figure.edgecolor':  ['white', validate_color],
-    'figure.frameon':    [True, validate_bool],
-    'figure.autolayout': [False, validate_bool],
-    'figure.max_open_warning': [20, validate_int],
-
-    'figure.subplot.left': [0.125, ValidateInterval(0, 1, closedmin=True,
-                                                       closedmax=True)],
-    'figure.subplot.right': [0.9, ValidateInterval(0, 1, closedmin=True,
-                                                     closedmax=True)],
-    'figure.subplot.bottom': [0.11, ValidateInterval(0, 1, closedmin=True,
-                                                     closedmax=True)],
-    'figure.subplot.top': [0.88, ValidateInterval(0, 1, closedmin=True,
-                                                     closedmax=True)],
-    'figure.subplot.wspace': [0.2, ValidateInterval(0, 1, closedmin=True,
-                                                     closedmax=False)],
-    'figure.subplot.hspace': [0.2, ValidateInterval(0, 1, closedmin=True,
-                                                     closedmax=False)],
+    'figure.figsize':    validate_nseq_float(2),
+    'figure.dpi':        validate_float,  # DPI
+    'figure.facecolor':  validate_color,
+    'figure.edgecolor':  validate_color,
+    'figure.frameon':    validate_bool,
+    'figure.autolayout': validate_bool,
+    'figure.max_open_warning': validate_int,
+
+    'figure.subplot.left': ValidateInterval(0, 1, closedmin=True,
+                                            closedmax=True),
+    'figure.subplot.right': ValidateInterval(0, 1, closedmin=True,
+                                             closedmax=True),
+    'figure.subplot.bottom': ValidateInterval(0, 1, closedmin=True,
+                                              closedmax=True),
+    'figure.subplot.top': ValidateInterval(0, 1, closedmin=True,
+                                           closedmax=True),
+    'figure.subplot.wspace': ValidateInterval(0, 1, closedmin=True,
+                                              closedmax=False),
+    'figure.subplot.hspace': ValidateInterval(0, 1, closedmin=True,
+                                              closedmax=False),
 
     # do constrained_layout.
-    'figure.constrained_layout.use': [False, validate_bool],
+    'figure.constrained_layout.use': validate_bool,
     # wspace and hspace are fraction of adjacent subplots to use
     # for space.  Much smaller than above because we don't need
     # room for the text.
-    'figure.constrained_layout.hspace': [0.02, ValidateInterval(
-            0, 1, closedmin=True, closedmax=False)],
-    'figure.constrained_layout.wspace': [0.02, ValidateInterval(
-            0, 1, closedmin=True, closedmax=False)],
+    'figure.constrained_layout.hspace': ValidateInterval(
+        0, 1, closedmin=True, closedmax=False),
+    'figure.constrained_layout.wspace': ValidateInterval(
+        0, 1, closedmin=True, closedmax=False),
     # This is a buffer around the axes in inches.  This is 3pts.
-    'figure.constrained_layout.h_pad': [0.04167, validate_float],
-    'figure.constrained_layout.w_pad': [0.04167, validate_float],
+    'figure.constrained_layout.h_pad': validate_float,
+    'figure.constrained_layout.w_pad': validate_float,
 
     ## Saving figure's properties
-    'savefig.dpi':         ['figure', validate_dpi],  # DPI
-    'savefig.facecolor':   ['white', validate_color],
-    'savefig.edgecolor':   ['white', validate_color],
-    'savefig.frameon':     [True, validate_bool],
-    'savefig.orientation': ['portrait', validate_orientation],
-    'savefig.jpeg_quality': [95, validate_int],
+    'savefig.dpi':         validate_dpi,  # DPI
+    'savefig.facecolor':   validate_color,
+    'savefig.edgecolor':   validate_color,
+    'savefig.frameon':     validate_bool,
+    'savefig.orientation': validate_orientation,
+    'savefig.jpeg_quality': validate_int,
     # value checked by backend at runtime
-    'savefig.format':     ['png', update_savefig_format],
+    'savefig.format':     update_savefig_format,
     # options are 'tight', or 'standard'. 'standard' validates to None.
-    'savefig.bbox':       ['standard', validate_bbox],
-    'savefig.pad_inches': [0.1, validate_float],
+    'savefig.bbox':       validate_bbox,
+    'savefig.pad_inches': validate_float,
     # default directory in savefig dialog box
-    'savefig.directory': ['~', validate_string],
-    'savefig.transparent': [False, validate_bool],
+    'savefig.directory': validate_string,
+    'savefig.transparent': validate_bool,
 
     # Maintain shell focus for TkAgg
-    'tk.window_focus':  [False, validate_bool],
+    'tk.window_focus':  validate_bool,
 
     # Set the papersize/type
-    'ps.papersize':     ['letter', validate_ps_papersize],
-    'ps.useafm':        [False, validate_bool],
+    'ps.papersize':     validate_ps_papersize,
+    'ps.useafm':        validate_bool,
     # use ghostscript or xpdf to distill ps output
-    'ps.usedistiller':  [False, validate_ps_distiller],
-    'ps.distiller.res': [6000, validate_int],     # dpi
-    'ps.fonttype':      [3, validate_fonttype],  # 3 (Type3) or 42 (Truetype)
+    'ps.usedistiller':  validate_ps_distiller,
+    'ps.distiller.res': validate_int,  # dpi
+    'ps.fonttype':      validate_fonttype,  # 3 (Type3) or 42 (Truetype)
     # compression level from 0 to 9; 0 to disable
-    'pdf.compression':  [6, validate_int],
+    'pdf.compression':  validate_int,
     # ignore any color-setting commands from the frontend
-    'pdf.inheritcolor': [False, validate_bool],
+    'pdf.inheritcolor': validate_bool,
     # use only the 14 PDF core fonts embedded in every PDF viewing application
-    'pdf.use14corefonts': [False, validate_bool],
-    'pdf.fonttype':     [3, validate_fonttype],  # 3 (Type3) or 42 (Truetype)
+    'pdf.use14corefonts': validate_bool,
+    'pdf.fonttype':     validate_fonttype,  # 3 (Type3) or 42 (Truetype)
 
-    'pgf.debug':     [False, validate_bool],  # output debug information
+    'pgf.debug':     validate_bool,  # output debug information
     # choose latex application for creating pdf files (xelatex/lualatex)
-    'pgf.texsystem': ['xelatex', validate_pgf_texsystem],
+    'pgf.texsystem': validate_pgf_texsystem,
     # use matplotlib rc settings for font configuration
-    'pgf.rcfonts':   [True, validate_bool],
+    'pgf.rcfonts':   validate_bool,
     # provide a custom preamble for the latex process
-    'pgf.preamble':  ['', _validate_tex_preamble],
+    'pgf.preamble':  _validate_tex_preamble,
 
     # write raster image data directly into the svg file
-    'svg.image_inline':     [True, validate_bool],
+    'svg.image_inline':     validate_bool,
     # True to save all characters as paths in the SVG
-    'svg.fonttype':         ['path', validate_svg_fonttype],
-    'svg.hashsalt':         [None, validate_string_or_None],
+    'svg.fonttype':         validate_svg_fonttype,
+    'svg.hashsalt':         validate_string_or_None,
 
     # set this when you want to generate hardcopy docstring
-    'docstring.hardcopy': [False, validate_bool],
+    'docstring.hardcopy': validate_bool,
 
-    'path.simplify': [True, validate_bool],
-    'path.simplify_threshold': [1.0 / 9.0, ValidateInterval(0.0, 1.0)],
-    'path.snap': [True, validate_bool],
-    'path.sketch': [None, validate_sketch],
-    'path.effects': [[], validate_any],
-    'agg.path.chunksize': [0, validate_int],       # 0 to disable chunking;
+    'path.simplify': validate_bool,
+    'path.simplify_threshold': ValidateInterval(0.0, 1.0),
+    'path.snap': validate_bool,
+    'path.sketch': validate_sketch,
+    'path.effects': validate_anylist,
+    'agg.path.chunksize': validate_int,  # 0 to disable chunking
 
     # key-mappings (multi-character mappings should be a list/tuple)
-    'keymap.fullscreen':   [['f', 'ctrl+f'], validate_stringlist],
-    'keymap.home':         [['h', 'r', 'home'], validate_stringlist],
-    'keymap.back':         [['left', 'c', 'backspace', 'MouseButton.BACK'],
-                            validate_stringlist],
-    'keymap.forward':      [['right', 'v', 'MouseButton.FORWARD'],
-                            validate_stringlist],
-    'keymap.pan':          [['p'], validate_stringlist],
-    'keymap.zoom':         [['o'], validate_stringlist],
-    'keymap.save':         [['s', 'ctrl+s'], validate_stringlist],
-    'keymap.quit':         [['ctrl+w', 'cmd+w', 'q'], validate_stringlist],
-    'keymap.quit_all':     [['W', 'cmd+W', 'Q'], validate_stringlist],
-    'keymap.grid':         [['g'], validate_stringlist],
-    'keymap.grid_minor':   [['G'], validate_stringlist],
-    'keymap.yscale':       [['l'], validate_stringlist],
-    'keymap.xscale':       [['k', 'L'], validate_stringlist],
-    'keymap.all_axes':     [['a'], validate_stringlist],
-    'keymap.help':         [['f1'], validate_stringlist],
-    'keymap.copy':         [['ctrl+c', 'cmd+c'], validate_stringlist],
+    'keymap.fullscreen': validate_stringlist,
+    'keymap.home':       validate_stringlist,
+    'keymap.back':       validate_stringlist,
+    'keymap.forward':    validate_stringlist,
+    'keymap.pan':        validate_stringlist,
+    'keymap.zoom':       validate_stringlist,
+    'keymap.save':       validate_stringlist,
+    'keymap.quit':       validate_stringlist,
+    'keymap.quit_all':   validate_stringlist,
+    'keymap.grid':       validate_stringlist,
+    'keymap.grid_minor': validate_stringlist,
+    'keymap.yscale':     validate_stringlist,
+    'keymap.xscale':     validate_stringlist,
+    'keymap.all_axes':   validate_stringlist,
+    'keymap.help':       validate_stringlist,
+    'keymap.copy':       validate_stringlist,
 
     # Animation settings
-    'animation.html':         ['none', validate_movie_html_fmt],
+    'animation.html':         validate_movie_html_fmt,
     # Limit, in MB, of size of base64 encoded animation in HTML
     # (i.e. IPython notebook)
-    'animation.embed_limit':  [20, validate_float],
-    'animation.writer':       ['ffmpeg', validate_movie_writer],
-    'animation.codec':        ['h264', validate_string],
-    'animation.bitrate':      [-1, validate_int],
+    'animation.embed_limit':  validate_float,
+    'animation.writer':       validate_movie_writer,
+    'animation.codec':        validate_string,
+    'animation.bitrate':      validate_int,
     # Controls image format when frames are written to disk
-    'animation.frame_format': ['png', validate_movie_frame_fmt],
+    'animation.frame_format': validate_movie_frame_fmt,
     # Additional arguments for HTML writer
-    'animation.html_args':    [[], validate_stringlist],
+    'animation.html_args':    validate_stringlist,
     # Path to ffmpeg binary. If just binary name, subprocess uses $PATH.
-    'animation.ffmpeg_path':  ['ffmpeg', validate_string],
+    'animation.ffmpeg_path':  validate_string,
     # Additional arguments for ffmpeg movie writer (using pipes)
-    'animation.ffmpeg_args':   [[], validate_stringlist],
+    'animation.ffmpeg_args':  validate_stringlist,
     # Path to AVConv binary. If just binary name, subprocess uses $PATH.
-    'animation.avconv_path':   ['avconv', validate_string],
+    'animation.avconv_path':  validate_string,
     # Additional arguments for avconv movie writer (using pipes)
-    'animation.avconv_args':   [[], validate_stringlist],
+    'animation.avconv_args':  validate_stringlist,
      # Path to convert binary. If just binary name, subprocess uses $PATH.
-    'animation.convert_path':  ['convert', validate_string],
+    'animation.convert_path': validate_string,
      # Additional arguments for convert movie writer (using pipes)
-    'animation.convert_args':  [[], validate_stringlist],
+    'animation.convert_args': validate_stringlist,
 
     # Classic (pre 2.0) compatibility mode
     # This is used for things that are hard to make backward compatible
     # with a sane rcParam alone.  This does *not* turn on classic mode
     # altogether.  For that use `matplotlib.style.use('classic')`.
-    '_internal.classic_mode': [False, validate_bool]
+    '_internal.classic_mode': validate_bool
+}
+
+
+_hardcoded_defaults = {  # Defaults not inferred from matplotlibrc.template...
+    # ... because it can't be:
+    'backend': _auto_backend_sentinel,
+    # ... because they are private:
+    '_internal.classic_mode': False,
+    # ... because they are deprecated:
+    'text.latex.unicode': True,
+    'savefig.frameon': True,
+    'verbose.level': 'silent',
+    'verbose.fileo': 'sys.stdout',
 }
diff --git a/lib/matplotlib/tests/test_rcparams.py b/lib/matplotlib/tests/test_rcparams.py
index a6b4890cd6e6..7c1d23987b41 100644
--- a/lib/matplotlib/tests/test_rcparams.py
+++ b/lib/matplotlib/tests/test_rcparams.py
@@ -422,73 +422,18 @@ def test_keymaps():
 
 
 def test_rcparams_reset_after_fail():
-
     # There was previously a bug that meant that if rc_context failed and
     # raised an exception due to issues in the supplied rc parameters, the
     # global rc parameters were left in a modified state.
-
     with mpl.rc_context(rc={'text.usetex': False}):
-
         assert mpl.rcParams['text.usetex'] is False
-
         with pytest.raises(KeyError):
             with mpl.rc_context(rc=OrderedDict([('text.usetex', True),
                                                 ('test.blah', True)])):
                 pass
-
         assert mpl.rcParams['text.usetex'] is False
 
 
-def test_if_rctemplate_is_up_to_date():
-    # This tests if the matplotlibrc.template file contains all valid rcParams.
-    deprecated = {*mpl._all_deprecated, *mpl._deprecated_remain_as_none}
-    with cbook._get_data_path('matplotlibrc').open() as file:
-        rclines = file.readlines()
-    missing = {}
-    for k, v in mpl.defaultParams.items():
-        if k[0] == "_":
-            continue
-        if k in deprecated:
-            continue
-        found = False
-        for line in rclines:
-            if k in line:
-                found = True
-        if not found:
-            missing.update({k: v})
-    if missing:
-        raise ValueError("The following params are missing in the "
-                         "matplotlibrc.template file: {}"
-                         .format(missing.items()))
-
-
-def test_if_rctemplate_would_be_valid(tmpdir):
-    # This tests if the matplotlibrc.template file would result in a valid
-    # rc file if all lines are uncommented.
-    with cbook._get_data_path('matplotlibrc').open() as file:
-        rclines = file.readlines()
-    newlines = []
-    for line in rclines:
-        if line[0] == "#":
-            newline = line[1:]
-        else:
-            newline = line
-        if "$TEMPLATE_BACKEND" in newline:
-            newline = "backend : Agg"
-        if "datapath" in newline:
-            newline = ""
-        newlines.append(newline)
-    d = tmpdir.mkdir('test1')
-    fname = str(d.join('testrcvalid.temp'))
-    with open(fname, "w") as f:
-        f.writelines(newlines)
-    with pytest.warns(None) as record:
-        mpl.rc_params_from_file(fname,
-                                fail_on_error=True,
-                                use_default_template=False)
-        assert len(record) == 0
-
-
 @pytest.mark.skipif(sys.platform != "linux", reason="Linux only")
 def test_backend_fallback_headless(tmpdir):
     env = {**os.environ,
diff --git a/matplotlibrc.template b/matplotlibrc.template
index 67761328dbdc..c9be954cf109 100644
--- a/matplotlibrc.template
+++ b/matplotlibrc.template
@@ -1,745 +1,745 @@
-#### MATPLOTLIBRC FORMAT
-
-## This is a sample matplotlib configuration file - you can find a copy
-## of it on your system in site-packages/matplotlib/mpl-data/matplotlibrc
-## (which related to your Python installation location).
-##
-## If you edit it there, please note that it will be overwritten in your
-## next install.  If you want to keep a permanent local copy that will not
-## be overwritten, place it in one of the following locations:
-## unix/linux:
-##     $HOME/.config/matplotlib/matplotlibrc OR
-##     $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
-## other platforms:
-##     $HOME/.matplotlib/matplotlibrc
-##
-## See https://matplotlib.org/users/customizing.html#the-matplotlibrc-file
-## for more details on the paths which are checked for the configuration file.
-##
-## This file is best viewed in a editor which supports python mode syntax
-## highlighting.  Blank lines, or lines starting with a comment symbol, are
-## ignored, as are trailing comments.  Other lines must have the format:
-##     key : val  ## optional comment
-##
-## Formatting and style conventions for this file:
-##     - at least one whitesapce AROUND `:` to seperate key and val
-##         * prefer one whitesapce except for block colon alignment
-##     - at least two whitesapces BEFORE `##` to seperate the key-val pair and
-##       the trailing comments
-##         * prefer two whitesapces except for block `##` alignment
-##     - at least one whitesapce AFTER `##` to seperate the `##` marker and
-##       the comment text
-##         * prefer one whitesapce except for indentation (listing, etc.), in
-##           which case, four more whitespaces are preferred
-##
-## Colors: for the color values below, you can either use
-##     - a matplotlib color string, such as r, k, or b
-##     - an rgb tuple, such as (1.0, 0.5, 0.0)
-##     - a hex string, such as ff00ff
-##     - a scalar grayscale intensity such as 0.75
-##     - a legal html color name, e.g., red, blue, darkslategray
-##
-## Matplotlib configuration are currently divided into following parts:
-##     - BACKENDS
-##     - LINES
-##     - PATCHES
-##     - HATCHES
-##     - BOXPLOT
-##     - FONT
-##     - TEXT
-##     - LaTeX
-##     - AXES
-##     - DATES
-##     - TICKS
-##     - GRIDS
-##     - LEGEND
-##     - FIGURE
-##     - IMAGES
-##     - CONTOUR PLOTS
-##     - ERRORBAR PLOTS
-##     - HISTOGRAM PLOTS
-##     - SCATTER PLOTS
-##     - AGG RENDERING
-##     - PATHS
-##     - SAVING FIGURES
-##     - INTERACTIVE KEYMAPS
-##     - ANIMATION
-
-##### CONFIGURATION BEGINS HERE
-
-
-## ***************************************************************************
-## * BACKENDS                                                                *
-## ***************************************************************************
-## The default backend.  If you omit this parameter, the first working
-## backend from the following list is used:
-##     MacOSX Qt5Agg Qt4Agg Gtk3Agg TkAgg WxAgg Agg
-## Other choices include:
-##     Qt5Cairo Qt4Cairo GTK3Cairo TkCairo WxCairo Cairo Wx
-##     PS PDF SVG Template
-## You can also deploy your own backend outside of matplotlib by referring to
-## the module name (which must be in the PYTHONPATH) as 'module://my_backend'.
+### MATPLOTLIBRC FORMAT
+
+# This is a sample matplotlib configuration file - you can find a copy
+# of it on your system in site-packages/matplotlib/mpl-data/matplotlibrc
+# (which related to your Python installation location).
+#
+# If you edit it there, please note that it will be overwritten in your
+# next install.  If you want to keep a permanent local copy that will not
+# be overwritten, place it in one of the following locations:
+# unix/linux:
+#     $HOME/.config/matplotlib/matplotlibrc OR
+#     $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set)
+# other platforms:
+#     $HOME/.matplotlib/matplotlibrc
+#
+# See https://matplotlib.org/users/customizing.html#the-matplotlibrc-file
+# for more details on the paths which are checked for the configuration file.
+#
+# This file is best viewed in a editor which supports python mode syntax
+# highlighting.  Blank lines, or lines starting with a comment symbol, are
+# ignored, as are trailing comments.  Other lines must have the format:
+#     key : val  ## optional comment
+#
+# Formatting and style conventions for this file:
+#     - at least one whitesapce AROUND `:` to seperate key and val
+#         * prefer one whitesapce except for block colon alignment
+#     - at least two whitesapces BEFORE `##` to seperate the key-val pair and
+#       the trailing comments
+#         * prefer two whitesapces except for block `##` alignment
+#     - at least one whitesapce AFTER `##` to seperate the `##` marker and
+#       the comment text
+#         * prefer one whitesapce except for indentation (listing, etc.), in
+#           which case, four more whitespaces are preferred
+#
+# Colors: for the color values below, you can either use
+#     - a matplotlib color string, such as r, k, or b
+#     - an rgb tuple, such as (1.0, 0.5, 0.0)
+#     - a hex string, such as ff00ff
+#     - a scalar grayscale intensity such as 0.75
+#     - a legal html color name, e.g., red, blue, darkslategray
+#
+# Matplotlib configuration are currently divided into following parts:
+#     - BACKENDS
+#     - LINES
+#     - PATCHES
+#     - HATCHES
+#     - BOXPLOT
+#     - FONT
+#     - TEXT
+#     - LaTeX
+#     - AXES
+#     - DATES
+#     - TICKS
+#     - GRIDS
+#     - LEGEND
+#     - FIGURE
+#     - IMAGES
+#     - CONTOUR PLOTS
+#     - ERRORBAR PLOTS
+#     - HISTOGRAM PLOTS
+#     - SCATTER PLOTS
+#     - AGG RENDERING
+#     - PATHS
+#     - SAVING FIGURES
+#     - INTERACTIVE KEYMAPS
+#     - ANIMATION
+
+#### CONFIGURATION BEGINS HERE
+
+
+# ***************************************************************************
+# * BACKENDS                                                                *
+# ***************************************************************************
+# The default backend.  If you omit this parameter, the first working
+# backend from the following list is used:
+#     MacOSX Qt5Agg Qt4Agg Gtk3Agg TkAgg WxAgg Agg
+# Other choices include:
+#     Qt5Cairo Qt4Cairo GTK3Cairo TkCairo WxCairo Cairo Wx
+#     PS PDF SVG Template
+# You can also deploy your own backend outside of matplotlib by referring to
+# the module name (which must be in the PYTHONPATH) as 'module://my_backend'.
 #backend : Agg
 
-## The port to use for the web server in the WebAgg backend.
-#webagg.port : 8988
-
-## The address on which the WebAgg web server should be reachable
-#webagg.address : 127.0.0.1
-
-## If webagg.port is unavailable, a number of other random ports will
-## be tried until one that is available is found.
-#webagg.port_retries : 50
-
-## When True, open the webbrowser to the plot that is shown
-#webagg.open_in_browser : True
-
-## If you are running pyplot inside a GUI and your backend choice
-## conflicts, we will automatically try to find a compatible one for
-## you if backend_fallback is True
-#backend_fallback : True
-
-#interactive : False
-#toolbar     : toolbar2  ## {None, toolbar2}
-#timezone    : UTC       ## a pytz timezone string, e.g., US/Central or Europe/Paris
-
-## Where your matplotlib data lives if you installed to a non-default
-## location.  This is where the matplotlib fonts, bitmaps, etc reside
-#datapath : /home/jdhunter/mpldata
-
-
-## ***************************************************************************
-## * LINES                                                                   *
-## ***************************************************************************
-## See https://matplotlib.org/api/artist_api.html#module-matplotlib.lines
-## for more information on line properties.
-#lines.linewidth : 1.5  ## line width in points
-#lines.linestyle : -    ## solid line
-#lines.color     : C0   ## has no affect on plot(); see axes.prop_cycle
-#lines.marker          : None  ## the default marker
-#lines.markerfacecolor : auto  ## the default marker face color
-#lines.markeredgecolor : auto  ## the default marker edge color
-#lines.markeredgewidth : 1.0   ## the line width around the marker symbol
-#lines.markersize      : 6     ## marker size, in points
-#lines.dash_joinstyle  : round       ## {miter, round, bevel}
-#lines.dash_capstyle   : butt        ## {butt, round, projecting}
-#lines.solid_joinstyle : round       ## {miter, round, bevel}
-#lines.solid_capstyle  : projecting  ## {butt, round, projecting}
-#lines.antialiased : True  ## render lines in antialiased (no jaggies)
-
-## The three standard dash patterns.  These are scaled by the linewidth.
-#lines.dashed_pattern : 3.7, 1.6
-#lines.dashdot_pattern : 6.4, 1.6, 1, 1.6
-#lines.dotted_pattern : 1, 1.65
-#lines.scale_dashes : True
-
-#markers.fillstyle : full  ## {full, left, right, bottom, top, none}
-
-
-## ***************************************************************************
-## * PATCHES                                                                 *
-## ***************************************************************************
-## Patches are graphical objects that fill 2D space, like polygons or circles.
-## See https://matplotlib.org/api/artist_api.html#module-matplotlib.patches
-## for more information on patch properties.
-#patch.linewidth       : 1      ## edge width in points.
-#patch.facecolor       : C0
-#patch.edgecolor       : black  ## if forced, or patch is not filled
-#patch.force_edgecolor : False  ## True to always use edgecolor
-#patch.antialiased     : True   ## render patches in antialiased (no jaggies)
-
-
-## ***************************************************************************
-## * HATCHES                                                                 *
-## ***************************************************************************
-#hatch.color     : black
-#hatch.linewidth : 1.0
-
-
-## ***************************************************************************
-## * BOXPLOT                                                                 *
-## ***************************************************************************
-#boxplot.notch       : False
-#boxplot.vertical    : True
-#boxplot.whiskers    : 1.5
-#boxplot.bootstrap   : None
-#boxplot.patchartist : False
-#boxplot.showmeans   : False
-#boxplot.showcaps    : True
-#boxplot.showbox     : True
-#boxplot.showfliers  : True
-#boxplot.meanline    : False
-
-#boxplot.flierprops.color           : black
-#boxplot.flierprops.marker          : o
-#boxplot.flierprops.markerfacecolor : none
-#boxplot.flierprops.markeredgecolor : black
-#boxplot.flierprops.markeredgewidth : 1.0
-#boxplot.flierprops.markersize      : 6
-#boxplot.flierprops.linestyle       : none
-#boxplot.flierprops.linewidth       : 1.0
-
-#boxplot.boxprops.color     : black
-#boxplot.boxprops.linewidth : 1.0
-#boxplot.boxprops.linestyle : -
-
-#boxplot.whiskerprops.color     : black
-#boxplot.whiskerprops.linewidth : 1.0
-#boxplot.whiskerprops.linestyle : -
-
-#boxplot.capprops.color     : black
-#boxplot.capprops.linewidth : 1.0
-#boxplot.capprops.linestyle : -
-
-#boxplot.medianprops.color     : C1
-#boxplot.medianprops.linewidth : 1.0
-#boxplot.medianprops.linestyle : -
-
-#boxplot.meanprops.color           : C2
-#boxplot.meanprops.marker          : ^
-#boxplot.meanprops.markerfacecolor : C2
-#boxplot.meanprops.markeredgecolor : C2
-#boxplot.meanprops.markersize      :  6
-#boxplot.meanprops.linestyle       : --
-#boxplot.meanprops.linewidth       : 1.0
-
-
-## ***************************************************************************
-## * FONT                                                                    *
-## ***************************************************************************
-## The font properties used by `text.Text`.
-## See https://matplotlib.org/api/font_manager_api.html for more information
-## on font properties.  The 6 font properties used for font matching are
-## given below with their default values.
-##
-## The font.family property has five values:
-##     - 'serif' (e.g., Times),
-##     - 'sans-serif' (e.g., Helvetica),
-##     - 'cursive' (e.g., Zapf-Chancery),
-##     - 'fantasy' (e.g., Western), and
-##     - 'monospace' (e.g., Courier).
-## Each of these font families has a default list of font names in decreasing
-## order of priority associated with them.  When text.usetex is False,
-## font.family may also be one or more concrete font names.
-##
-## The font.style property has three values: normal (or roman), italic
-## or oblique.  The oblique style will be used for italic, if it is not
-## present.
-##
-## The font.variant property has two values: normal or small-caps.  For
-## TrueType fonts, which are scalable fonts, small-caps is equivalent
-## to using a font size of 'smaller', or about 83%% of the current font
-## size.
-##
-## The font.weight property has effectively 13 values: normal, bold,
-## bolder, lighter, 100, 200, 300, ..., 900.  Normal is the same as
-## 400, and bold is 700.  bolder and lighter are relative values with
-## respect to the current weight.
-##
-## The font.stretch property has 11 values: ultra-condensed,
-## extra-condensed, condensed, semi-condensed, normal, semi-expanded,
-## expanded, extra-expanded, ultra-expanded, wider, and narrower.  This
-## property is not currently implemented.
-##
-## The font.size property is the default font size for text, given in pts.
-## 10 pt is the standard value.
-##
-## Note that font.size controls default text sizes.  To configure
-## special text sizes tick labels, axes, labels, title, etc, see the rc
-## settings for axes and ticks.  Special text sizes can be defined
-## relative to font.size, using the following values: xx-small, x-small,
-## small, medium, large, x-large, xx-large, larger, or smaller
-
-#font.family  : sans-serif
-#font.style   : normal
-#font.variant : normal
-#font.weight  : normal
-#font.stretch : normal
-#font.size    : 10.0
-
-#font.serif      : DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
-#font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
-#font.cursive    : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
-#font.fantasy    : Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, xkcd, fantasy
-#font.monospace  : DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace
-
-
-## ***************************************************************************
-## * TEXT                                                                    *
-## ***************************************************************************
-## The text properties used by `text.Text`.
-## See https://matplotlib.org/api/artist_api.html#module-matplotlib.text
-## for more information on text properties
-#text.color : black
-
-
-## ***************************************************************************
-## * LaTeX                                                                   *
-## ***************************************************************************
-## See following links for more information on LaTex properties:
-## https://matplotlib.org/tutorials/text/usetex.html
-## https://scipy-cookbook.readthedocs.io/items/idx_matplotlib_typesetting.html
-#text.usetex : False  ## use latex for all text handling. The following fonts
-                      ## are supported through the usual rc parameter settings:
-                      ## new century schoolbook, bookman, times, palatino,
-                      ## zapf chancery, charter, serif, sans-serif, helvetica,
-                      ## avant garde, courier, monospace, computer modern roman,
-                      ## computer modern sans serif, computer modern typewriter
-                      ## If another font is desired which can loaded using the
-                      ## LaTeX \usepackage command, please inquire at the
-                      ## matplotlib mailing list
-#text.latex.preamble :      ## IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES
-                            ## AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP
-                            ## IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO.
-                            ## text.latex.preamble is a single line of LaTeX code that
-                            ## will be passed on to the LaTeX system. It may contain
-                            ## any code that is valid for the LaTeX "preamble", i.e.
-                            ## between the "\documentclass" and "\begin{document}"
-                            ## statements.
-                            ## Note that it has to be put on a single line, which may
-                            ## become quite long.
-                            ## The following packages are always loaded with usetex, so
-                            ## beware of package collisions: color, geometry, graphicx,
-                            ## type1cm, textcomp.
-                            ## Adobe Postscript (PSSNFS) font packages may also be
-                            ## loaded, depending on your font settings.
-#text.latex.preview : False
-
-#text.hinting : auto  ## May be one of the following:
-                      ##     - none: Perform no hinting
-                      ##     - auto: Use FreeType's autohinter
-                      ##     - native: Use the hinting information in the
-                      ##               font file, if available, and if your
-                      ##               FreeType library supports it
-                      ##     - either: Use the native hinting information,
-                      ##               or the autohinter if none is available.
-#text.hinting_factor : 8  ## Specifies the amount of softness for hinting in the
-                          ## horizontal direction.  A value of 1 will hint to full
-                          ## pixels.  A value of 2 will hint to half pixels etc.
-#text.antialiased : True  ## If True (default), the text will be antialiased.
-                          ## This only affects the Agg backend.
-
-## The following settings allow you to select the fonts in math mode.
-## They map from a TeX font name to a fontconfig font pattern.
-## These settings are only used if mathtext.fontset is 'custom'.
-## Note that this "custom" mode is unsupported and may go away in the future.
-#mathtext.cal : cursive
-#mathtext.rm  : sans
-#mathtext.tt  : monospace
-#mathtext.it  : sans:italic
-#mathtext.bf  : sans:bold
-#mathtext.sf  : sans
-#mathtext.fontset : dejavusans  ## Should be 'dejavusans' (default),
-                                ## 'dejavuserif', 'cm' (Computer Modern), 'stix',
-                                ## 'stixsans' or 'custom'
-#mathtext.fallback_to_cm : True  ## When True, use symbols from the Computer Modern
-                                 ## fonts when a symbol can not be found in one of
-                                 ## the custom math fonts.
-#mathtext.default : it  ## The default font to use for math.
-                        ## Can be any of the LaTeX font names, including
-                        ## the special name "regular" for the same font
-                        ## used in regular text.
-
-
-## ***************************************************************************
-## * AXES                                                                    *
-## ***************************************************************************
-## Following are default face and edge colors, default tick sizes,
-## default fontsizes for ticklabels, and so on.  See
-## https://matplotlib.org/api/axes_api.html#module-matplotlib.axes
-#axes.facecolor     : white   ## axes background color
-#axes.edgecolor     : black   ## axes edge color
-#axes.linewidth     : 0.8     ## edge linewidth
-#axes.grid          : False   ## display grid or not
-#axes.grid.axis     : both    ## which axis the grid should apply to
-#axes.grid.which    : major   ## gridlines at {major, minor, both} ticks
-#axes.titlelocation : center  ## alignment of the title: {left, right, center}
-#axes.titlesize     : large   ## fontsize of the axes title
-#axes.titleweight   : normal  ## font weight of title
-#axes.titlecolor    : auto    ## color of the axes title, auto falls back to text.color
-                              ## as default value
-#axes.titlepad      : 6.0     ## pad between axes and title in points
-#axes.labelsize     : medium  ## fontsize of the x any y labels
-#axes.labelpad      : 4.0     ## space between label and axis
-#axes.labelweight   : normal  ## weight of the x and y labels
-#axes.labelcolor    : black
-#axes.axisbelow     : line    ## draw axis gridlines and ticks:
-                              ##     - below patches (True)
-                              ##     - above patches but below lines ('line')
-                              ##     - above all (False)
-
-#axes.formatter.limits : -7, 7  ## use scientific notation if log10
-                                ## of the axis range is smaller than the
-                                ## first or larger than the second
-#axes.formatter.use_locale : False  ## When True, format tick labels
-                                    ## according to the user's locale.
-                                    ## For example, use ',' as a decimal
-                                    ## separator in the fr_FR locale.
-#axes.formatter.use_mathtext : False  ## When True, use mathtext for scientific
-                                      ## notation.
-#axes.formatter.min_exponent : 0  ## minimum exponent to format in scientific notation
-#axes.formatter.useoffset : True  ## If True, the tick label formatter
-                                  ## will default to labeling ticks relative
-                                  ## to an offset when the data range is
-                                  ## small compared to the minimum absolute
-                                  ## value of the data.
-#axes.formatter.offset_threshold : 4  ## When useoffset is True, the offset
-                                      ## will be used when it can remove
-                                      ## at least this number of significant
-                                      ## digits from tick labels.
-
-#axes.spines.left   : True  ## display axis spines
-#axes.spines.bottom : True
-#axes.spines.top    : True
-#axes.spines.right  : True
-
-#axes.unicode_minus : True  ## use Unicode for the minus symbol
-                            ## rather than hyphen.  See
-                            ## https://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
-#axes.prop_cycle : cycler('color', ['1f77b4', 'ff7f0e', '2ca02c', 'd62728', '9467bd', '8c564b', 'e377c2', '7f7f7f', 'bcbd22', '17becf'])
-                   ## color cycle for plot lines as list of string colorspecs:
-                   ##     single letter, long name, or web-style hex
-				   ## As opposed to all other paramters in this file, the color
-				   ## values must be enclosed in quotes for this parameter,
-				   #  e.g. '1f77b4', instead of 1f77b4.
-                   ## See also https://matplotlib.org/tutorials/intermediate/color_cycle.html
-                   ## for more details on prop_cycle usage.
-#axes.autolimit_mode : data  ## How to scale axes limits to the data.  By using:
-                             ##     - "data" to use data limits, plus some margin
-                             ##     - "round_numbers" move to the nearest "round" number
-#axes.xmargin   : .05   ## x margin.  See `axes.Axes.margins`
-#axes.ymargin   : .05   ## y margin.  See `axes.Axes.margins`
-#polaraxes.grid : True  ## display grid on polar axes
-#axes3d.grid    : True  ## display grid on 3d axes
-
-
-## ***************************************************************************
-## * DATES                                                                   *
-## ***************************************************************************
-## These control the default format strings used in AutoDateFormatter.
-## Any valid format datetime format string can be used (see the python
-## `datetime` for details).  For example, by using:
-##     - '%%x' will use the locale date representation
-##     - '%%X' will use the locale time representation
-##     - '%%c' will use the full locale datetime representation
-## These values map to the scales:
-##     {'year': 365, 'month': 30, 'day': 1, 'hour': 1/24, 'minute': 1 / (24 * 60)}
-
-#date.autoformatter.year        : %Y
-#date.autoformatter.month       : %Y-%m
-#date.autoformatter.day         : %Y-%m-%d
-#date.autoformatter.hour        : %m-%d %H
-#date.autoformatter.minute      : %d %H:%M
-#date.autoformatter.second      : %H:%M:%S
-#date.autoformatter.microsecond : %M:%S.%f
-
-
-## ***************************************************************************
-## * TICKS                                                                   *
-## ***************************************************************************
-## See https://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
-#xtick.top           : False   ## draw ticks on the top side
-#xtick.bottom        : True    ## draw ticks on the bottom side
-#xtick.labeltop      : False   ## draw label on the top
-#xtick.labelbottom   : True    ## draw label on the bottom
-#xtick.major.size    : 3.5     ## major tick size in points
-#xtick.minor.size    : 2       ## minor tick size in points
-#xtick.major.width   : 0.8     ## major tick width in points
-#xtick.minor.width   : 0.6     ## minor tick width in points
-#xtick.major.pad     : 3.5     ## distance to major tick label in points
-#xtick.minor.pad     : 3.4     ## distance to the minor tick label in points
-#xtick.color         : black   ## color of the tick labels
-#xtick.labelsize     : medium  ## fontsize of the tick labels
-#xtick.direction     : out     ## direction: {in, out, inout}
-#xtick.minor.visible : False   ## visibility of minor ticks on x-axis
-#xtick.major.top     : True    ## draw x axis top major ticks
-#xtick.major.bottom  : True    ## draw x axis bottom major ticks
-#xtick.minor.top     : True    ## draw x axis top minor ticks
-#xtick.minor.bottom  : True    ## draw x axis bottom minor ticks
-#xtick.alignment     : center  ## alignment of xticks
-
-#ytick.left          : True    ## draw ticks on the left side
-#ytick.right         : False   ## draw ticks on the right side
-#ytick.labelleft     : True    ## draw tick labels on the left side
-#ytick.labelright    : False   ## draw tick labels on the right side
-#ytick.major.size    : 3.5     ## major tick size in points
-#ytick.minor.size    : 2       ## minor tick size in points
-#ytick.major.width   : 0.8     ## major tick width in points
-#ytick.minor.width   : 0.6     ## minor tick width in points
-#ytick.major.pad     : 3.5     ## distance to major tick label in points
-#ytick.minor.pad     : 3.4     ## distance to the minor tick label in points
-#ytick.color         : black   ## color of the tick labels
-#ytick.labelsize     : medium  ## fontsize of the tick labels
-#ytick.direction     : out     ## direction: {in, out, inout}
-#ytick.minor.visible : False   ## visibility of minor ticks on y-axis
-#ytick.major.left    : True    ## draw y axis left major ticks
-#ytick.major.right   : True    ## draw y axis right major ticks
-#ytick.minor.left    : True    ## draw y axis left minor ticks
-#ytick.minor.right   : True    ## draw y axis right minor ticks
-#ytick.alignment     : center_baseline  ## alignment of yticks
-
-
-## ***************************************************************************
-## * GRIDS                                                                   *
-## ***************************************************************************
-#grid.color     : b0b0b0  ## grid color
-#grid.linestyle : -       ## solid
-#grid.linewidth : 0.8     ## in points
-#grid.alpha     : 1.0     ## transparency, between 0.0 and 1.0
-
-
-## ***************************************************************************
-## * LEGEND                                                                  *
-## ***************************************************************************
-#legend.loc           : best
-#legend.frameon       : True     ## if True, draw the legend on a background patch
-#legend.framealpha    : 0.8      ## legend patch transparency
-#legend.facecolor     : inherit  ## inherit from axes.facecolor; or color spec
-#legend.edgecolor     : 0.8      ## background patch boundary color
-#legend.fancybox      : True     ## if True, use a rounded box for the
-                                 ## legend background, else a rectangle
-#legend.shadow        : False    ## if True, give background a shadow effect
-#legend.numpoints     : 1        ## the number of marker points in the legend line
-#legend.scatterpoints : 1        ## number of scatter points
-#legend.markerscale   : 1.0      ## the relative size of legend markers vs. original
-#legend.fontsize      : medium
-#legend.title_fontsize : None    ## None sets to the same as the default axes.
-
-## Dimensions as fraction of fontsize:
-#legend.borderpad     : 0.4  ## border whitespace
-#legend.labelspacing  : 0.5  ## the vertical space between the legend entries
-#legend.handlelength  : 2.0  ## the length of the legend lines
-#legend.handleheight  : 0.7  ## the height of the legend handle
-#legend.handletextpad : 0.8  ## the space between the legend line and legend text
-#legend.borderaxespad : 0.5  ## the border between the axes and legend edge
-#legend.columnspacing : 2.0  ## column separation
-
-
-## ***************************************************************************
-## * FIGURE                                                                  *
-## ***************************************************************************
-## See https://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure
-#figure.titlesize   : large     ## size of the figure title (``Figure.suptitle()``)
-#figure.titleweight : normal    ## weight of the figure title
-#figure.figsize     : 6.4, 4.8  ## figure size in inches
-#figure.dpi         : 100       ## figure dots per inch
-#figure.facecolor   : white     ## figure facecolor
-#figure.edgecolor   : white     ## figure edgecolor
-#figure.frameon     : True      ## enable figure frame
-#figure.max_open_warning : 20   ## The maximum number of figures to open through
-                                ## the pyplot interface before emitting a warning.
-                                ## If less than one this feature is disabled.
-
-## The figure subplot parameters.  All dimensions are a fraction of the figure width and height.
-#figure.subplot.left   : 0.125  ## the left side of the subplots of the figure
-#figure.subplot.right  : 0.9    ## the right side of the subplots of the figure
-#figure.subplot.bottom : 0.11   ## the bottom of the subplots of the figure
-#figure.subplot.top    : 0.88   ## the top of the subplots of the figure
-#figure.subplot.wspace : 0.2    ## the amount of width reserved for space between subplots,
-                                ## expressed as a fraction of the average axis width
-#figure.subplot.hspace : 0.2    ## the amount of height reserved for space between subplots,
-                                ## expressed as a fraction of the average axis height
-
-## Figure layout
-#figure.autolayout : False  ## When True, automatically adjust subplot
-                            ## parameters to make the plot fit the figure
-                            ## using `tight_layout`
-#figure.constrained_layout.use : False  ## When True, automatically make plot
-                                        ## elements fit on the figure. (Not
-                                        ## compatible with `autolayout`, above).
-#figure.constrained_layout.h_pad  : 0.04167  ## Padding around axes objects. Float representing
-#figure.constrained_layout.w_pad  : 0.04167  ## inches. Default is 3./72. inches (3 pts)
-#figure.constrained_layout.hspace : 0.02     ## Space between subplot groups. Float representing
-#figure.constrained_layout.wspace : 0.02     ## a fraction of the subplot widths being separated.
-
-
-## ***************************************************************************
-## * IMAGES                                                                  *
-## ***************************************************************************
-#image.aspect : equal            ## {equal, auto} or a number
-#image.interpolation  : antialiased  ## see help(imshow) for options
-#image.cmap   : viridis          ## A colormap name, gray etc...
-#image.lut    : 256              ## the size of the colormap lookup table
-#image.origin : upper            ## {lower, upper}
-#image.resample  : True
-#image.composite_image : True  ## When True, all the images on a set of axes are
-                               ## combined into a single composite image before
-                               ## saving a figure as a vector graphics file,
-                               ## such as a PDF.
-
-
-## ***************************************************************************
-## * CONTOUR PLOTS                                                           *
-## ***************************************************************************
-#contour.negative_linestyle : dashed  ## string or on-off ink sequence
-#contour.corner_mask        : True    ## {True, False, legacy}
-
-
-## ***************************************************************************
-## * ERRORBAR PLOTS                                                          *
-## ***************************************************************************
-#errorbar.capsize : 0  ## length of end cap on error bars in pixels
-
-
-## ***************************************************************************
-## * HISTOGRAM PLOTS                                                         *
-## ***************************************************************************
-#hist.bins : 10  ## The default number of histogram bins or 'auto'.
-
-
-## ***************************************************************************
-## * SCATTER PLOTS                                                           *
-## ***************************************************************************
-#scatter.marker : o         ## The default marker type for scatter plots.
-#scatter.edgecolors : face  ## The default edge colors for scatter plots.
-
-
-## ***************************************************************************
-## * AGG RENDERING                                                           *
-## ***************************************************************************
-## Warning: experimental, 2008/10/10
-#agg.path.chunksize : 0  ## 0 to disable; values in the range
-                         ## 10000 to 100000 can improve speed slightly
-                         ## and prevent an Agg rendering failure
-                         ## when plotting very large data sets,
-                         ## especially if they are very gappy.
-                         ## It may cause minor artifacts, though.
-                         ## A value of 20000 is probably a good
-                         ## starting point.
-
-
-## ***************************************************************************
-## * PATHS                                                                   *
-## ***************************************************************************
-#path.simplify : True  ## When True, simplify paths by removing "invisible"
-                       ## points to reduce file size and increase rendering
-                       ## speed
-#path.simplify_threshold : 0.111111111111  ## The threshold of similarity below
-                                           ## which vertices will be removed in
-                                           ## the simplification process.
-#path.snap : True  ## When True, rectilinear axis-aligned paths will be snapped
-                   ## to the nearest pixel when certain criteria are met.
-                   ## When False, paths will never be snapped.
-#path.sketch : None  ## May be None, or a 3-tuple of the form:
-                     ## (scale, length, randomness).
-                     ##     - *scale* is the amplitude of the wiggle
-                     ##         perpendicular to the line (in pixels).
-                     ##     - *length* is the length of the wiggle along the
-                     ##         line (in pixels).
-                     ##     - *randomness* is the factor by which the length is
-                     ##         randomly scaled.
-#path.effects : []   ##
-
-
-## ***************************************************************************
-## * SAVING FIGURES                                                          *
-## ***************************************************************************
-## The default savefig params can be different from the display params
-## e.g., you may want a higher resolution, or to make the figure
-## background white
-#savefig.dpi       : figure      ## figure dots per inch or 'figure'
-#savefig.facecolor : white       ## figure facecolor when saving
-#savefig.edgecolor : white       ## figure edgecolor when saving
-#savefig.format    : png         ## {png, ps, pdf, svg}
-#savefig.bbox      : standard    ## {tight, standard}
-                                 ## 'tight' is incompatible with pipe-based animation
-                                 ## backends but will workd with temporary file based ones:
-                                 ## e.g. setting animation.writer to ffmpeg will not work,
-                                 ## use ffmpeg_file instead
-#savefig.pad_inches   : 0.1      ## Padding to be used when bbox is set to 'tight'
-#savefig.jpeg_quality : 95       ## when a jpeg is saved, the default quality parameter.
-#savefig.directory    : ~        ## default directory in savefig dialog box,
-                                 ## leave empty to always use current working directory
-#savefig.transparent : False     ## setting that controls whether figures are saved with a
-                                 ## transparent background by default
-#savefig.orientation : portrait  ## Orientation of saved figure
-
-### tk backend params
-#tk.window_focus   : False  ## Maintain shell focus for TkAgg
-
-### ps backend params
-#ps.papersize      : letter  ## {auto, letter, legal, ledger, A0-A10, B0-B10}
-#ps.useafm         : False   ## use of afm fonts, results in small files
-#ps.usedistiller   : False   ## {ghostscript, xpdf, None}
-                             ## Experimental: may produce smaller files.
-                             ## xpdf intended for production of publication quality files,
-                             ## but requires ghostscript, xpdf and ps2eps
-#ps.distiller.res  : 6000    ## dpi
-#ps.fonttype       : 3       ## Output Type 3 (Type3) or Type 42 (TrueType)
-
-### PDF backend params
-#pdf.compression    : 6  ## integer from 0 to 9
-                         ## 0 disables compression (good for debugging)
-#pdf.fonttype       : 3  ## Output Type 3 (Type3) or Type 42 (TrueType)
-#pdf.use14corefonts : False
-#pdf.inheritcolor   : False
-
-### SVG backend params
-#svg.image_inline : True  ## Write raster image data directly into the SVG file
-#svg.fonttype : path      ## How to handle SVG fonts:
-                          ##     path: Embed characters as paths -- supported
-                          ##           by most SVG renderers
-                          ##     None: Assume fonts are installed on the
-                          ##           machine where the SVG will be viewed.
-#svg.hashsalt : None      ## If not None, use this string as hash salt instead of uuid4
-
-### pgf parameter
-## See https://matplotlib.org/tutorials/text/pgf.html for more information.
-#pgf.rcfonts : True
-#pgf.preamble :          ## See text.latex.preamble for documentation
-#pgf.texsystem : xelatex
-
-### docstring params
-##docstring.hardcopy = False  ## set this when you want to generate hardcopy docstring
-
-
-## ***************************************************************************
-## * INTERACTIVE KEYMAPS                                                     *
-## ***************************************************************************
-## Event keys to interact with figures/plots via keyboard.
-## See https://matplotlib.org/users/navigation_toolbar.html for more details on
-## interactive navigation.  Customize these settings according to your needs.
-## Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '')
-#keymap.fullscreen : f, ctrl+f   ## toggling
-#keymap.home : h, r, home        ## home or reset mnemonic
-#keymap.back : left, c, backspace, MouseButton.BACK  ## forward / backward keys
-#keymap.forward : right, v, MouseButton.FORWARD      ## for quick navigation
-#keymap.pan : p                  ## pan mnemonic
-#keymap.zoom : o                 ## zoom mnemonic
-#keymap.save : s, ctrl+s         ## saving current figure
-#keymap.help : f1                ## display help about active tools
-#keymap.quit : ctrl+w, cmd+w, q  ## close the current figure
-#keymap.quit_all : W, cmd+W, Q   ## close all figures
-#keymap.grid : g                 ## switching on/off major grids in current axes
-#keymap.grid_minor : G           ## switching on/off minor grids in current axes
-#keymap.yscale : l               ## toggle scaling of y-axes ('log'/'linear')
-#keymap.xscale : k, L            ## toggle scaling of x-axes ('log'/'linear')
-#keymap.all_axes : a             ## enable all axes
-#keymap.copy : ctrl+c, cmd+c     ## Copy figure to clipboard
-
-
-## ***************************************************************************
-## * ANIMATION                                                               *
-## ***************************************************************************
-#animation.html : none  ## How to display the animation as HTML in
-                        ## the IPython notebook:
-                        ##     - 'html5' uses HTML5 video tag
-                        ##     - 'jshtml' creates a Javascript animation
-#animation.writer  : ffmpeg  ## MovieWriter 'backend' to use
-#animation.codec   : h264    ## Codec to use for writing movie
-#animation.bitrate : -1      ## Controls size/quality tradeoff for movie.
-                             ## -1 implies let utility auto-determine
-#animation.frame_format : png      ## Controls frame format used by temp files
-#animation.html_args    :          ## Additional arguments to pass to html writer
-#animation.ffmpeg_path  : ffmpeg   ## Path to ffmpeg binary. Without full path
-                                   ## $PATH is searched
-#animation.ffmpeg_args  :          ## Additional arguments to pass to ffmpeg
-#animation.avconv_path  : avconv   ## Path to avconv binary. Without full path
-                                   ## $PATH is searched
-#animation.avconv_args  :          ## Additional arguments to pass to avconv
-#animation.convert_path : convert  ## Path to ImageMagick's convert binary.
-                                   ## On Windows use the full path since convert
-                                   ## is also the name of a system tool.
-#animation.convert_args :          ## Additional arguments to pass to convert
-#animation.embed_limit  : 20.0     ## Limit, in MB, of size of base64 encoded
-                                   ## animation in HTML (i.e. IPython notebook)
+# The port to use for the web server in the WebAgg backend.
+webagg.port : 8988
+
+# The address on which the WebAgg web server should be reachable
+webagg.address : 127.0.0.1
+
+# If webagg.port is unavailable, a number of other random ports will
+# be tried until one that is available is found.
+webagg.port_retries : 50
+
+# When True, open the webbrowser to the plot that is shown
+webagg.open_in_browser : True
+
+# If you are running pyplot inside a GUI and your backend choice
+# conflicts, we will automatically try to find a compatible one for
+# you if backend_fallback is True
+backend_fallback : True
+
+interactive : False
+toolbar     : toolbar2  ## {None, toolbar2}
+timezone    : UTC       ## a pytz timezone string, e.g., US/Central or Europe/Paris
+
+# Where your matplotlib data lives if you installed to a non-default
+# location.  This is where the matplotlib fonts, bitmaps, etc reside
+datapath : /home/jdhunter/mpldata
+
+
+# ***************************************************************************
+# * LINES                                                                   *
+# ***************************************************************************
+# See https://matplotlib.org/api/artist_api.html#module-matplotlib.lines
+# for more information on line properties.
+lines.linewidth : 1.5  ## line width in points
+lines.linestyle : -    ## solid line
+lines.color     : C0   ## has no affect on plot(); see axes.prop_cycle
+lines.marker          : None  ## the default marker
+lines.markerfacecolor : auto  ## the default marker face color
+lines.markeredgecolor : auto  ## the default marker edge color
+lines.markeredgewidth : 1.0   ## the line width around the marker symbol
+lines.markersize      : 6     ## marker size, in points
+lines.dash_joinstyle  : round       ## {miter, round, bevel}
+lines.dash_capstyle   : butt        ## {butt, round, projecting}
+lines.solid_joinstyle : round       ## {miter, round, bevel}
+lines.solid_capstyle  : projecting  ## {butt, round, projecting}
+lines.antialiased : True  ## render lines in antialiased (no jaggies)
+
+# The three standard dash patterns.  These are scaled by the linewidth.
+lines.dashed_pattern : 3.7, 1.6
+lines.dashdot_pattern : 6.4, 1.6, 1, 1.6
+lines.dotted_pattern : 1, 1.65
+lines.scale_dashes : True
+
+markers.fillstyle : full  ## {full, left, right, bottom, top, none}
+
+
+# ***************************************************************************
+# * PATCHES                                                                 *
+# ***************************************************************************
+# Patches are graphical objects that fill 2D space, like polygons or circles.
+# See https://matplotlib.org/api/artist_api.html#module-matplotlib.patches
+# for more information on patch properties.
+patch.linewidth       : 1      ## edge width in points.
+patch.facecolor       : C0
+patch.edgecolor       : black  ## if forced, or patch is not filled
+patch.force_edgecolor : False  ## True to always use edgecolor
+patch.antialiased     : True   ## render patches in antialiased (no jaggies)
+
+
+# ***************************************************************************
+# * HATCHES                                                                 *
+# ***************************************************************************
+hatch.color     : black
+hatch.linewidth : 1.0
+
+
+# ***************************************************************************
+# * BOXPLOT                                                                 *
+# ***************************************************************************
+boxplot.notch       : False
+boxplot.vertical    : True
+boxplot.whiskers    : 1.5
+boxplot.bootstrap   : None
+boxplot.patchartist : False
+boxplot.showmeans   : False
+boxplot.showcaps    : True
+boxplot.showbox     : True
+boxplot.showfliers  : True
+boxplot.meanline    : False
+
+boxplot.flierprops.color           : black
+boxplot.flierprops.marker          : o
+boxplot.flierprops.markerfacecolor : none
+boxplot.flierprops.markeredgecolor : black
+boxplot.flierprops.markeredgewidth : 1.0
+boxplot.flierprops.markersize      : 6
+boxplot.flierprops.linestyle       : none
+boxplot.flierprops.linewidth       : 1.0
+
+boxplot.boxprops.color     : black
+boxplot.boxprops.linewidth : 1.0
+boxplot.boxprops.linestyle : -
+
+boxplot.whiskerprops.color     : black
+boxplot.whiskerprops.linewidth : 1.0
+boxplot.whiskerprops.linestyle : -
+
+boxplot.capprops.color     : black
+boxplot.capprops.linewidth : 1.0
+boxplot.capprops.linestyle : -
+
+boxplot.medianprops.color     : C1
+boxplot.medianprops.linewidth : 1.0
+boxplot.medianprops.linestyle : -
+
+boxplot.meanprops.color           : C2
+boxplot.meanprops.marker          : ^
+boxplot.meanprops.markerfacecolor : C2
+boxplot.meanprops.markeredgecolor : C2
+boxplot.meanprops.markersize      :  6
+boxplot.meanprops.linestyle       : --
+boxplot.meanprops.linewidth       : 1.0
+
+
+# ***************************************************************************
+# * FONT                                                                    *
+# ***************************************************************************
+# The font properties used by `text.Text`.
+# See https://matplotlib.org/api/font_manager_api.html for more information
+# on font properties.  The 6 font properties used for font matching are
+# given below with their default values.
+#
+# The font.family property has five values:
+#     - 'serif' (e.g., Times),
+#     - 'sans-serif' (e.g., Helvetica),
+#     - 'cursive' (e.g., Zapf-Chancery),
+#     - 'fantasy' (e.g., Western), and
+#     - 'monospace' (e.g., Courier).
+# Each of these font families has a default list of font names in decreasing
+# order of priority associated with them.  When text.usetex is False,
+# font.family may also be one or more concrete font names.
+#
+# The font.style property has three values: normal (or roman), italic
+# or oblique.  The oblique style will be used for italic, if it is not
+# present.
+#
+# The font.variant property has two values: normal or small-caps.  For
+# TrueType fonts, which are scalable fonts, small-caps is equivalent
+# to using a font size of 'smaller', or about 83%% of the current font
+# size.
+#
+# The font.weight property has effectively 13 values: normal, bold,
+# bolder, lighter, 100, 200, 300, ..., 900.  Normal is the same as
+# 400, and bold is 700.  bolder and lighter are relative values with
+# respect to the current weight.
+#
+# The font.stretch property has 11 values: ultra-condensed,
+# extra-condensed, condensed, semi-condensed, normal, semi-expanded,
+# expanded, extra-expanded, ultra-expanded, wider, and narrower.  This
+# property is not currently implemented.
+#
+# The font.size property is the default font size for text, given in pts.
+# 10 pt is the standard value.
+#
+# Note that font.size controls default text sizes.  To configure
+# special text sizes tick labels, axes, labels, title, etc, see the rc
+# settings for axes and ticks.  Special text sizes can be defined
+# relative to font.size, using the following values: xx-small, x-small,
+# small, medium, large, x-large, xx-large, larger, or smaller
+
+font.family  : sans-serif
+font.style   : normal
+font.variant : normal
+font.weight  : normal
+font.stretch : normal
+font.size    : 10.0
+
+font.serif      : DejaVu Serif, Bitstream Vera Serif, Computer Modern Roman, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif
+font.sans-serif : DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
+font.cursive    : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive
+font.fantasy    : Comic Sans MS, Chicago, Charcoal, ImpactWestern, Humor Sans, xkcd, fantasy
+font.monospace  : DejaVu Sans Mono, Bitstream Vera Sans Mono, Computer Modern Typewriter, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace
+
+
+# ***************************************************************************
+# * TEXT                                                                    *
+# ***************************************************************************
+# The text properties used by `text.Text`.
+# See https://matplotlib.org/api/artist_api.html#module-matplotlib.text
+# for more information on text properties
+text.color : black
+
+
+# ***************************************************************************
+# * LaTeX                                                                   *
+# ***************************************************************************
+# See following links for more information on LaTex properties:
+# https://matplotlib.org/tutorials/text/usetex.html
+# https://scipy-cookbook.readthedocs.io/items/idx_matplotlib_typesetting.html
+text.usetex : False  ## use latex for all text handling. The following fonts
+                     ## are supported through the usual rc parameter settings:
+                     ## new century schoolbook, bookman, times, palatino,
+                     ## zapf chancery, charter, serif, sans-serif, helvetica,
+                     ## avant garde, courier, monospace, computer modern roman,
+                     ## computer modern sans serif, computer modern typewriter
+                     ## If another font is desired which can loaded using the
+                     ## LaTeX \usepackage command, please inquire at the
+                     ## matplotlib mailing list
+text.latex.preamble :      ## IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES
+                           ## AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP
+                           ## IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO.
+                           ## text.latex.preamble is a single line of LaTeX code that
+                           ## will be passed on to the LaTeX system. It may contain
+                           ## any code that is valid for the LaTeX "preamble", i.e.
+                           ## between the "\documentclass" and "\begin{document}"
+                           ## statements.
+                           ## Note that it has to be put on a single line, which may
+                           ## become quite long.
+                           ## The following packages are always loaded with usetex, so
+                           ## beware of package collisions: color, geometry, graphicx,
+                           ## type1cm, textcomp.
+                           ## Adobe Postscript (PSSNFS) font packages may also be
+                           ## loaded, depending on your font settings.
+text.latex.preview : False
+
+text.hinting : auto  ## May be one of the following:
+                     ##     - none: Perform no hinting
+                     ##     - auto: Use FreeType's autohinter
+                     ##     - native: Use the hinting information in the
+                     ##               font file, if available, and if your
+                     ##               FreeType library supports it
+                     ##     - either: Use the native hinting information,
+                     ##               or the autohinter if none is available.
+text.hinting_factor : 8  ## Specifies the amount of softness for hinting in the
+                         ## horizontal direction.  A value of 1 will hint to full
+                         ## pixels.  A value of 2 will hint to half pixels etc.
+text.antialiased : True  ## If True (default), the text will be antialiased.
+                         ## This only affects the Agg backend.
+
+# The following settings allow you to select the fonts in math mode.
+# They map from a TeX font name to a fontconfig font pattern.
+# These settings are only used if mathtext.fontset is 'custom'.
+# Note that this "custom" mode is unsupported and may go away in the future.
+mathtext.cal : cursive
+mathtext.rm  : sans
+mathtext.tt  : monospace
+mathtext.it  : sans:italic
+mathtext.bf  : sans:bold
+mathtext.sf  : sans
+mathtext.fontset : dejavusans  ## Should be 'dejavusans' (default),
+                               ## 'dejavuserif', 'cm' (Computer Modern), 'stix',
+                               ## 'stixsans' or 'custom'
+mathtext.fallback_to_cm : True  ## When True, use symbols from the Computer Modern
+                                ## fonts when a symbol can not be found in one of
+                                ## the custom math fonts.
+mathtext.default : it  ## The default font to use for math.
+                       ## Can be any of the LaTeX font names, including
+                       ## the special name "regular" for the same font
+                       ## used in regular text.
+
+
+# ***************************************************************************
+# * AXES                                                                    *
+# ***************************************************************************
+# Following are default face and edge colors, default tick sizes,
+# default fontsizes for ticklabels, and so on.  See
+# https://matplotlib.org/api/axes_api.html#module-matplotlib.axes
+axes.facecolor     : white   ## axes background color
+axes.edgecolor     : black   ## axes edge color
+axes.linewidth     : 0.8     ## edge linewidth
+axes.grid          : False   ## display grid or not
+axes.grid.axis     : both    ## which axis the grid should apply to
+axes.grid.which    : major   ## gridlines at {major, minor, both} ticks
+axes.titlelocation : center  ## alignment of the title: {left, right, center}
+axes.titlesize     : large   ## fontsize of the axes title
+axes.titleweight   : normal  ## font weight of title
+axes.titlecolor    : auto    ## color of the axes title, auto falls back to text.color
+                             ## as default value
+axes.titlepad      : 6.0     ## pad between axes and title in points
+axes.labelsize     : medium  ## fontsize of the x any y labels
+axes.labelpad      : 4.0     ## space between label and axis
+axes.labelweight   : normal  ## weight of the x and y labels
+axes.labelcolor    : black
+axes.axisbelow     : line    ## draw axis gridlines and ticks:
+                             ##     - below patches (True)
+                             ##     - above patches but below lines ('line')
+                             ##     - above all (False)
+
+axes.formatter.limits : -7, 7  ## use scientific notation if log10
+                               ## of the axis range is smaller than the
+                               ## first or larger than the second
+axes.formatter.use_locale : False  ## When True, format tick labels
+                                   ## according to the user's locale.
+                                   ## For example, use ',' as a decimal
+                                   ## separator in the fr_FR locale.
+axes.formatter.use_mathtext : False  ## When True, use mathtext for scientific
+                                     ## notation.
+axes.formatter.min_exponent : 0  ## minimum exponent to format in scientific notation
+axes.formatter.useoffset : True  ## If True, the tick label formatter
+                                 ## will default to labeling ticks relative
+                                 ## to an offset when the data range is
+                                 ## small compared to the minimum absolute
+                                 ## value of the data.
+axes.formatter.offset_threshold : 4  ## When useoffset is True, the offset
+                                     ## will be used when it can remove
+                                     ## at least this number of significant
+                                     ## digits from tick labels.
+
+axes.spines.left   : True  ## display axis spines
+axes.spines.bottom : True
+axes.spines.top    : True
+axes.spines.right  : True
+
+axes.unicode_minus : True  ## use Unicode for the minus symbol
+                           ## rather than hyphen.  See
+                           ## https://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes
+axes.prop_cycle : cycler('color', ['1f77b4', 'ff7f0e', '2ca02c', 'd62728', '9467bd', '8c564b', 'e377c2', '7f7f7f', 'bcbd22', '17becf'])
+                  ## color cycle for plot lines as list of string colorspecs:
+                  ##     single letter, long name, or web-style hex
+       			   ## As opposed to all other paramters in this file, the color
+       			   ## values must be enclosed in quotes for this parameter,
+       			   #  e.g. '1f77b4', instead of 1f77b4.
+                  ## See also https://matplotlib.org/tutorials/intermediate/color_cycle.html
+                  ## for more details on prop_cycle usage.
+axes.autolimit_mode : data  ## How to scale axes limits to the data.  By using:
+                            ##     - "data" to use data limits, plus some margin
+                            ##     - "round_numbers" move to the nearest "round" number
+axes.xmargin   : .05   ## x margin.  See `axes.Axes.margins`
+axes.ymargin   : .05   ## y margin.  See `axes.Axes.margins`
+polaraxes.grid : True  ## display grid on polar axes
+axes3d.grid    : True  ## display grid on 3d axes
+
+
+# ***************************************************************************
+# * DATES                                                                   *
+# ***************************************************************************
+# These control the default format strings used in AutoDateFormatter.
+# Any valid format datetime format string can be used (see the python
+# `datetime` for details).  For example, by using:
+#     - '%%x' will use the locale date representation
+#     - '%%X' will use the locale time representation
+#     - '%%c' will use the full locale datetime representation
+# These values map to the scales:
+#     {'year': 365, 'month': 30, 'day': 1, 'hour': 1/24, 'minute': 1 / (24 * 60)}
+
+date.autoformatter.year        : %Y
+date.autoformatter.month       : %Y-%m
+date.autoformatter.day         : %Y-%m-%d
+date.autoformatter.hour        : %m-%d %H
+date.autoformatter.minute      : %d %H:%M
+date.autoformatter.second      : %H:%M:%S
+date.autoformatter.microsecond : %M:%S.%f
+
+
+# ***************************************************************************
+# * TICKS                                                                   *
+# ***************************************************************************
+# See https://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick
+xtick.top           : False   ## draw ticks on the top side
+xtick.bottom        : True    ## draw ticks on the bottom side
+xtick.labeltop      : False   ## draw label on the top
+xtick.labelbottom   : True    ## draw label on the bottom
+xtick.major.size    : 3.5     ## major tick size in points
+xtick.minor.size    : 2       ## minor tick size in points
+xtick.major.width   : 0.8     ## major tick width in points
+xtick.minor.width   : 0.6     ## minor tick width in points
+xtick.major.pad     : 3.5     ## distance to major tick label in points
+xtick.minor.pad     : 3.4     ## distance to the minor tick label in points
+xtick.color         : black   ## color of the tick labels
+xtick.labelsize     : medium  ## fontsize of the tick labels
+xtick.direction     : out     ## direction: {in, out, inout}
+xtick.minor.visible : False   ## visibility of minor ticks on x-axis
+xtick.major.top     : True    ## draw x axis top major ticks
+xtick.major.bottom  : True    ## draw x axis bottom major ticks
+xtick.minor.top     : True    ## draw x axis top minor ticks
+xtick.minor.bottom  : True    ## draw x axis bottom minor ticks
+xtick.alignment     : center  ## alignment of xticks
+
+ytick.left          : True    ## draw ticks on the left side
+ytick.right         : False   ## draw ticks on the right side
+ytick.labelleft     : True    ## draw tick labels on the left side
+ytick.labelright    : False   ## draw tick labels on the right side
+ytick.major.size    : 3.5     ## major tick size in points
+ytick.minor.size    : 2       ## minor tick size in points
+ytick.major.width   : 0.8     ## major tick width in points
+ytick.minor.width   : 0.6     ## minor tick width in points
+ytick.major.pad     : 3.5     ## distance to major tick label in points
+ytick.minor.pad     : 3.4     ## distance to the minor tick label in points
+ytick.color         : black   ## color of the tick labels
+ytick.labelsize     : medium  ## fontsize of the tick labels
+ytick.direction     : out     ## direction: {in, out, inout}
+ytick.minor.visible : False   ## visibility of minor ticks on y-axis
+ytick.major.left    : True    ## draw y axis left major ticks
+ytick.major.right   : True    ## draw y axis right major ticks
+ytick.minor.left    : True    ## draw y axis left minor ticks
+ytick.minor.right   : True    ## draw y axis right minor ticks
+ytick.alignment     : center_baseline  ## alignment of yticks
+
+
+# ***************************************************************************
+# * GRIDS                                                                   *
+# ***************************************************************************
+grid.color     : b0b0b0  ## grid color
+grid.linestyle : -       ## solid
+grid.linewidth : 0.8     ## in points
+grid.alpha     : 1.0     ## transparency, between 0.0 and 1.0
+
+
+# ***************************************************************************
+# * LEGEND                                                                  *
+# ***************************************************************************
+legend.loc           : best
+legend.frameon       : True     ## if True, draw the legend on a background patch
+legend.framealpha    : 0.8      ## legend patch transparency
+legend.facecolor     : inherit  ## inherit from axes.facecolor; or color spec
+legend.edgecolor     : 0.8      ## background patch boundary color
+legend.fancybox      : True     ## if True, use a rounded box for the
+                                ## legend background, else a rectangle
+legend.shadow        : False    ## if True, give background a shadow effect
+legend.numpoints     : 1        ## the number of marker points in the legend line
+legend.scatterpoints : 1        ## number of scatter points
+legend.markerscale   : 1.0      ## the relative size of legend markers vs. original
+legend.fontsize      : medium
+legend.title_fontsize : None    ## None sets to the same as the default axes.
+
+# Dimensions as fraction of fontsize:
+legend.borderpad     : 0.4  ## border whitespace
+legend.labelspacing  : 0.5  ## the vertical space between the legend entries
+legend.handlelength  : 2.0  ## the length of the legend lines
+legend.handleheight  : 0.7  ## the height of the legend handle
+legend.handletextpad : 0.8  ## the space between the legend line and legend text
+legend.borderaxespad : 0.5  ## the border between the axes and legend edge
+legend.columnspacing : 2.0  ## column separation
+
+
+# ***************************************************************************
+# * FIGURE                                                                  *
+# ***************************************************************************
+# See https://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure
+figure.titlesize   : large     ## size of the figure title (``Figure.suptitle()``)
+figure.titleweight : normal    ## weight of the figure title
+figure.figsize     : 6.4, 4.8  ## figure size in inches
+figure.dpi         : 100       ## figure dots per inch
+figure.facecolor   : white     ## figure facecolor
+figure.edgecolor   : white     ## figure edgecolor
+figure.frameon     : True      ## enable figure frame
+figure.max_open_warning : 20   ## The maximum number of figures to open through
+                               ## the pyplot interface before emitting a warning.
+                               ## If less than one this feature is disabled.
+
+# The figure subplot parameters.  All dimensions are a fraction of the figure width and height.
+figure.subplot.left   : 0.125  ## the left side of the subplots of the figure
+figure.subplot.right  : 0.9    ## the right side of the subplots of the figure
+figure.subplot.bottom : 0.11   ## the bottom of the subplots of the figure
+figure.subplot.top    : 0.88   ## the top of the subplots of the figure
+figure.subplot.wspace : 0.2    ## the amount of width reserved for space between subplots,
+                               ## expressed as a fraction of the average axis width
+figure.subplot.hspace : 0.2    ## the amount of height reserved for space between subplots,
+                               ## expressed as a fraction of the average axis height
+
+# Figure layout
+figure.autolayout : False  ## When True, automatically adjust subplot
+                           ## parameters to make the plot fit the figure
+                           ## using `tight_layout`
+figure.constrained_layout.use : False  ## When True, automatically make plot
+                                       ## elements fit on the figure. (Not
+                                       ## compatible with `autolayout`, above).
+figure.constrained_layout.h_pad  : 0.04167  ## Padding around axes objects. Float representing
+figure.constrained_layout.w_pad  : 0.04167  ## inches. Default is 3./72. inches (3 pts)
+figure.constrained_layout.hspace : 0.02     ## Space between subplot groups. Float representing
+figure.constrained_layout.wspace : 0.02     ## a fraction of the subplot widths being separated.
+
+
+# ***************************************************************************
+# * IMAGES                                                                  *
+# ***************************************************************************
+image.aspect : equal            ## {equal, auto} or a number
+image.interpolation  : antialiased  ## see help(imshow) for options
+image.cmap   : viridis          ## A colormap name, gray etc...
+image.lut    : 256              ## the size of the colormap lookup table
+image.origin : upper            ## {lower, upper}
+image.resample  : True
+image.composite_image : True  ## When True, all the images on a set of axes are
+                              ## combined into a single composite image before
+                              ## saving a figure as a vector graphics file,
+                              ## such as a PDF.
+
+
+# ***************************************************************************
+# * CONTOUR PLOTS                                                           *
+# ***************************************************************************
+contour.negative_linestyle : dashed  ## string or on-off ink sequence
+contour.corner_mask        : True    ## {True, False, legacy}
+
+
+# ***************************************************************************
+# * ERRORBAR PLOTS                                                          *
+# ***************************************************************************
+errorbar.capsize : 0  ## length of end cap on error bars in pixels
+
+
+# ***************************************************************************
+# * HISTOGRAM PLOTS                                                         *
+# ***************************************************************************
+hist.bins : 10  ## The default number of histogram bins or 'auto'.
+
+
+# ***************************************************************************
+# * SCATTER PLOTS                                                           *
+# ***************************************************************************
+scatter.marker : o         ## The default marker type for scatter plots.
+scatter.edgecolors : face  ## The default edge colors for scatter plots.
+
+
+# ***************************************************************************
+# * AGG RENDERING                                                           *
+# ***************************************************************************
+# Warning: experimental, 2008/10/10
+agg.path.chunksize : 0  ## 0 to disable; values in the range
+                        ## 10000 to 100000 can improve speed slightly
+                        ## and prevent an Agg rendering failure
+                        ## when plotting very large data sets,
+                        ## especially if they are very gappy.
+                        ## It may cause minor artifacts, though.
+                        ## A value of 20000 is probably a good
+                        ## starting point.
+
+
+# ***************************************************************************
+# * PATHS                                                                   *
+# ***************************************************************************
+path.simplify : True  ## When True, simplify paths by removing "invisible"
+                      ## points to reduce file size and increase rendering
+                      ## speed
+path.simplify_threshold : 0.111111111111  ## The threshold of similarity below
+                                          ## which vertices will be removed in
+                                          ## the simplification process.
+path.snap : True  ## When True, rectilinear axis-aligned paths will be snapped
+                  ## to the nearest pixel when certain criteria are met.
+                  ## When False, paths will never be snapped.
+path.sketch : None  ## May be None, or a 3-tuple of the form:
+                    ## (scale, length, randomness).
+                    ##     - *scale* is the amplitude of the wiggle
+                    ##         perpendicular to the line (in pixels).
+                    ##     - *length* is the length of the wiggle along the
+                    ##         line (in pixels).
+                    ##     - *randomness* is the factor by which the length is
+                    ##         randomly scaled.
+path.effects :      ##
+
+
+# ***************************************************************************
+# * SAVING FIGURES                                                          *
+# ***************************************************************************
+# The default savefig params can be different from the display params
+# e.g., you may want a higher resolution, or to make the figure
+# background white
+savefig.dpi       : figure      ## figure dots per inch or 'figure'
+savefig.facecolor : white       ## figure facecolor when saving
+savefig.edgecolor : white       ## figure edgecolor when saving
+savefig.format    : png         ## {png, ps, pdf, svg}
+savefig.bbox      : standard    ## {tight, standard}
+                                ## 'tight' is incompatible with pipe-based animation
+                                ## backends but will workd with temporary file based ones:
+                                ## e.g. setting animation.writer to ffmpeg will not work,
+                                ## use ffmpeg_file instead
+savefig.pad_inches   : 0.1      ## Padding to be used when bbox is set to 'tight'
+savefig.jpeg_quality : 95       ## when a jpeg is saved, the default quality parameter.
+savefig.directory    : ~        ## default directory in savefig dialog box,
+                                ## leave empty to always use current working directory
+savefig.transparent : False     ## setting that controls whether figures are saved with a
+                                ## transparent background by default
+savefig.orientation : portrait  ## Orientation of saved figure
+
+## tk backend params
+tk.window_focus   : False  ## Maintain shell focus for TkAgg
+
+## ps backend params
+ps.papersize      : letter  ## {auto, letter, legal, ledger, A0-A10, B0-B10}
+ps.useafm         : False   ## use of afm fonts, results in small files
+ps.usedistiller   : False   ## {ghostscript, xpdf, None}
+                            ## Experimental: may produce smaller files.
+                            ## xpdf intended for production of publication quality files,
+                            ## but requires ghostscript, xpdf and ps2eps
+ps.distiller.res  : 6000    ## dpi
+ps.fonttype       : 3       ## Output Type 3 (Type3) or Type 42 (TrueType)
+
+## PDF backend params
+pdf.compression    : 6  ## integer from 0 to 9
+                        ## 0 disables compression (good for debugging)
+pdf.fonttype       : 3  ## Output Type 3 (Type3) or Type 42 (TrueType)
+pdf.use14corefonts : False
+pdf.inheritcolor   : False
+
+## SVG backend params
+svg.image_inline : True  ## Write raster image data directly into the SVG file
+svg.fonttype : path      ## How to handle SVG fonts:
+                         ##     path: Embed characters as paths -- supported
+                         ##           by most SVG renderers
+                         ##     None: Assume fonts are installed on the
+                         ##           machine where the SVG will be viewed.
+svg.hashsalt : None      ## If not None, use this string as hash salt instead of uuid4
+
+## pgf parameter
+# See https://matplotlib.org/tutorials/text/pgf.html for more information.
+pgf.rcfonts : True
+pgf.preamble :          ## See text.latex.preamble for documentation
+pgf.texsystem : xelatex
+
+## docstring params
+docstring.hardcopy: False  ## set this when you want to generate hardcopy docstring
+
+
+# ***************************************************************************
+# * INTERACTIVE KEYMAPS                                                     *
+# ***************************************************************************
+# Event keys to interact with figures/plots via keyboard.
+# See https://matplotlib.org/users/navigation_toolbar.html for more details on
+# interactive navigation.  Customize these settings according to your needs.
+# Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '')
+keymap.fullscreen : f, ctrl+f   ## toggling
+keymap.home : h, r, home        ## home or reset mnemonic
+keymap.back : left, c, backspace, MouseButton.BACK  ## forward / backward keys
+keymap.forward : right, v, MouseButton.FORWARD      ## for quick navigation
+keymap.pan : p                  ## pan mnemonic
+keymap.zoom : o                 ## zoom mnemonic
+keymap.save : s, ctrl+s         ## saving current figure
+keymap.help : f1                ## display help about active tools
+keymap.quit : ctrl+w, cmd+w, q  ## close the current figure
+keymap.quit_all : W, cmd+W, Q   ## close all figures
+keymap.grid : g                 ## switching on/off major grids in current axes
+keymap.grid_minor : G           ## switching on/off minor grids in current axes
+keymap.yscale : l               ## toggle scaling of y-axes ('log'/'linear')
+keymap.xscale : k, L            ## toggle scaling of x-axes ('log'/'linear')
+keymap.all_axes : a             ## enable all axes
+keymap.copy : ctrl+c, cmd+c     ## Copy figure to clipboard
+
+
+# ***************************************************************************
+# * ANIMATION                                                               *
+# ***************************************************************************
+animation.html : none  ## How to display the animation as HTML in
+                       ## the IPython notebook:
+                       ##     - 'html5' uses HTML5 video tag
+                       ##     - 'jshtml' creates a Javascript animation
+animation.writer  : ffmpeg  ## MovieWriter 'backend' to use
+animation.codec   : h264    ## Codec to use for writing movie
+animation.bitrate : -1      ## Controls size/quality tradeoff for movie.
+                            ## -1 implies let utility auto-determine
+animation.frame_format : png      ## Controls frame format used by temp files
+animation.html_args    :          ## Additional arguments to pass to html writer
+animation.ffmpeg_path  : ffmpeg   ## Path to ffmpeg binary. Without full path
+                                  ## $PATH is searched
+animation.ffmpeg_args  :          ## Additional arguments to pass to ffmpeg
+animation.avconv_path  : avconv   ## Path to avconv binary. Without full path
+                                  ## $PATH is searched
+animation.avconv_args  :          ## Additional arguments to pass to avconv
+animation.convert_path : convert  ## Path to ImageMagick's convert binary.
+                                  ## On Windows use the full path since convert
+                                  ## is also the name of a system tool.
+animation.convert_args :          ## Additional arguments to pass to convert
+animation.embed_limit  : 20.0     ## Limit, in MB, of size of base64 encoded
+                                  ## animation in HTML (i.e. IPython notebook)