On Saturday 21 July 2007 3:12:44 pm Fernando Perez wrote:
> On 7/21/07, Darren Dale <[EMAIL PROTECTED]> wrote:
> > I'm working on converting our existing rc code to tconfig this weekend.
> > So far so good. I just wanted to let people know to avoid duplicating
> > effort.
>
> Excellent!  Ping me if you have any problems.

Im attaching a patch, it includes lots of changes to mplconfig.py, a realistic 
mplrc.conf file (feel free to rename it to mpl.conf or matplotlib.conf or 
whatever seems standard), and a backup of that .conf file. The mpltest lets 
me try your trick of modifying a well formatted file in place. Very nice!

A couple comments:

1) Comments in the config file must appear on a separate line from the 
parameters, or they will be overwritten

2) It would be nice to be able to write a default file that has everything 
commented out with the exception of backend.use and numerix. We comment out 
all the parameters in the current matplotlibrc, which makes it easier to 
identify what has been customized during troubleshooting.

3) Any key appearing in the conf file is validated, so you cant mispell a key 
name or accidentally include some garbage. But after generating the MPLConfig 
object mplrc, you can do something like mplrc.nonsense = 1 without generating 
an error. Is there a way to prevent the creation of additional attributes 
once mplrc has been instantiated? That was a useful improvement to our 
current rcParams.

4) It would be nice to create a new mpl.conf file based on changes made 
interactively, without having to overwrite the old file, yet still preserving 
the order and comments seen in the default I attached. Maybe copying the 
default into the new location, and using it as the template? Even better, 
when I saved a new file, it would preserve the defaults order, and any 
settings that are identical to the defaults would be commented out. Ok, I'm 
getting carried away. sorry.

> I'm going to try and finish hierarchical inclusion of files (aka
> ipython profiles) now.  Consider for example a paper that requires
> black and white only styles.  You could then have in that paper's
> directory a .matplotlib.conf file with:
>
> # paper-specific tweaks
> include = "$HOME/.matplotlib/matplotlib.conf"
>
> [lines]
> color = 'black'
> thickness = 2
>
> etc.

Thats a nice idea.

> Or in your .matplotlib dir, you could keep multiple configurations
> that branch off the basic one for different needs, while keeping
> common defaults in one central location.
>
> In my first implementation I'll have to give up on safe roundtripping
> to files with recursion active, because it's a bit tricky to do both
> (not impossible).

I'm feeling a bit cross-eyed from coding all day, and this is a little too 
abstract at the moment for my poor head. Good luck!

Darren
Index: mpltest.py
===================================================================
--- mpltest.py	(revision 2532)
+++ mpltest.py	(working copy)
@@ -5,43 +5,14 @@
 import mplconfig; reload(mplconfig)
 from mplconfig import MPLConfig
 
-# Main code
 
-app = App(MPLConfig,'mpl2.conf')
-
-print app.rc
-
-# some more examples:
-print '-'*80
-print "Here is a default mpl config generated purely from the code:"
-mplrc = MPLConfig()
-print mplrc
-
-print '-'*80
-print "And here is a modified one, using a config file that only changes"
-print "a few parameters and otherwise uses the defaults:"
-mpl2conf = mkConfigObj('mpl2.conf')
-mplrc2 = MPLConfig(mpl2conf)
-print mplrc2
-
-# An example of the ConfigManager usage.
-m3conf = 'mpl3.conf'
-if os.path.isfile(m3conf):
-    os.unlink(m3conf)
-mplconf = ConfigManager(MPLConfig,m3conf)
+m3conf = 'mplrc.conf'
+mplconf = ConfigManager(MPLConfig, m3conf, filePriority=True)
+mplconf.tconf.backend.use = 'Qt4Agg'
 mplconf.write()
-print '-'*80
-print "The file %r was written to disk..." % m3conf
-os.system('more %s' % m3conf)
 
-if 0:
-    print '-'*80
-    print "Play with the 'mpl' object a little, esp its .rc attribute..."
-    print "You can even do mpl.rc.edit_traits() if you are running in "
-    print "ipython -wthread.  It only works with the top-level for now."
-    print
-    print "The following is an auto-generated dump of the rc object."
-    print "Note that this remains valid input for an rc file:"
-    print
-    mpl = App(MPLConfig,'mpl.conf')
-    print mpl.rc
+##mplrc = mplconf.tconf
+##
+##mplrc.nonsense = 1
+##
+##print mplrc
Index: mplrc.conf
===================================================================
--- mplrc.conf	(revision 0)
+++ mplrc.conf	(revision 0)
@@ -0,0 +1,443 @@
+### MATPLOTLIBRC FORMAT
+
+# This is a sample matplotlib configuration file.  It should be placed
+# in HOME/.matplotlib/matplotlibrc (unix/linux like systems) and
+# C:\Documents and Settings\yourname\.matplotlib (win32 systems)
+#
+# By default, the installer will overwrite the existing file in the
+# install path, so if you want to preserve your's, please move it to
+# your HOME dir and set the environment variable if necessary.
+#
+# This file is best viewed in a editor which supports ini or conf 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
+#
+# val should be valid python syntax, just as you would use when setting
+# properties using rcParams. This should become more obvious by inspecting 
+# the default values listed herein.
+#
+# 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 or ff00ff
+#  - a scalar grayscale intensity such as 0.75
+#  - a legal html color name, eg red, blue, darkslategray
+
+#### CONFIGURATION BEGINS HERE
+# see http://matplotlib.sourceforge.net/interactive.html
+interactive = False
+
+# None | classic | toolbar2
+toolbar = 'toolbar2'
+
+# a pytz timezone string, eg US/Central or Europe/Paris
+timezone = 'UTC'
+
+# Where your matplotlib data lives if you installed to a non-default 
+#location.  This is where the matplotlib fonts, bitmaps, etc reside
+datapath = '/home/darren/.matplotlib'
+
+[backend]
+    # 'GTKAgg', 'GTKCairo', 'QtAgg', 'Qt4Agg', 'TkAgg', 'Agg', 
+    # 'Cairo', 'PS', 'PDF', 'SVG'
+    use = 'Qt4Agg'
+    
+    [[cairo]]
+        # png, ps, pdf, svg
+        format = 'png'
+    
+    [[tk]]
+        # Maintain shell focus for TkAgg
+        window_focus = False
+        
+        # tk sets PYTHONINSEPCT
+        pythoninspect = False
+    
+    [[ps]]
+        # auto, letter, legal, ledger, A0-A10, B0-B10
+        papersize = 'letter'
+        
+        # use of afm fonts, results in smaller files
+        useafm = False
+        
+        # 3 (Type3) or 42 (TrueType)
+        fonttype = 3
+        
+        [[[distiller]]]
+            # can be: None, ghostscript or xpdf
+            # xpdf intended for production of publication quality 
+            # files, but requires ghostscript, xpdf and ps2eps
+            use = None
+            
+            # distiller resolution, dpi
+            resolution = 6000.0
+    
+    [[pdf]]
+        # integer from 0 to 9
+        # 0 disables compression (good for debugging)
+        compression = 6
+        
+        # 3 (Type3) or 42 (TrueType)
+        fonttype = 3
+    
+    [[svg]]
+        # write raster image data directly into the svg file
+        image_inline = True
+        
+        # suppress scaling of raster data embedded in SVG
+        image_noscale = False
+        
+        # embed character outlines in the SVG file
+        embed_chars = False
+
+[InitOnly]
+    # numpy, Numeric or numarray
+    numerix = 'numpy'
+    
+    # True to use external maskedarray module instead of numpy.ma; this is a 
+    # temporary setting for testing maskedarray.
+    maskedarray = False
+
+[lines]
+    # See http://matplotlib.sourceforge.net/matplotlib.lines.html for more
+    # information on line properties.
+    
+    # line width in points
+    linewidth = 1.0
+    
+    # '-','--','-.', ':', 'steps', '', ' ', or None
+    linestyle = '-'
+    
+    color = 'blue'
+    
+    # The default marker: None, 'o', '.', ',', '^', 'v', '<', '>', 's', '+',
+    # 'x', 'D', 'd', '1', '2', '3', '4', 'h', 'H', 'p', '|', '_'
+    marker = None
+    
+    # the line width around the marker symbol
+    markeredgewidth = 0.5
+    
+    # markersize, in points
+    markersize = 6.0
+    
+    # miter|round|bevel
+    dash_joinstyle = 'miter'
+    solid_joinstyle = 'miter'
+    
+    # butt|round|projecting
+    dash_capstyle = 'butt'
+    solid_capstyle = 'projecting'
+    
+    # render antialised lines (no jaggies)
+    antialiased = True
+
+[patch]
+    # Patches are graphical objects that fill 2D space, like polygons or
+    # circles.  See
+    # http://matplotlib.sourceforge.net/matplotlib.patches.html for more
+    # information on patch properties
+    
+    # edge width in points
+    linewidth = 1.0
+    
+    facecolor = 'blue'
+    edgecolor = 'black'
+    
+    # render antialised lines (no jaggies)
+    antialiased = True
+
+[font]
+    # font properties used by text.Text.  See
+    # http://matplotlib.sourceforge.net/matplotlib.font_manager.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.
+    family = 'sans-serif'
+    
+    # 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.
+    style = 'normal'
+    
+    # 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.
+    variant = 'normal'
+    
+    # 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.
+    weight = 'normal'
+    
+    # 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.
+    stretch = 'normal'
+    
+    # The font.size property is the default font size for text, given in pts.
+    # 12pt 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
+    size = 12.0
+    
+    # A search list for each of the font families
+    serif = ['Bitstream Vera Serif', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif']
+    sans_serif = ['Bitstream Vera Sans', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']
+    cursive = ['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'cursive']
+    fantasy = ['Comic Sans MS', 'Chicago', 'Charcoal', 'Impact', 'Western', 'fantasy']
+    monospace = ['Bitstream Vera Sans Mono', 'Andale Mono', 'Nimbus Mono L', 'Courier New', 'Courier', 'Fixed', 'Terminal', 'monospace']
+
+[text]
+    # text properties used by text.Text.  See
+    # http://matplotlib.sourceforge.net/matplotlib.text.html for more
+    # information on text properties
+    color = 'black'
+    
+    ### LaTeX customizations
+    # See http://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex
+    
+    # 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
+    usetex = False
+    
+    [[latex]]
+        # use "ucs" and "inputenc" LaTeX packages for 
+        # handling unicode strings.
+        unicode = False
+        
+        # IMPROPER USE OF THE PREAMBLE 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.
+        # preamble is a comma separated list of LaTeX
+        # statements that are included in the LaTeX document 
+        # preamble.
+        # An example:
+        # text.latex.preamble = ["\usepackage{bm}", "\usepackage{euler}"]
+        # 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
+        preamble = []
+        
+        # some versions of dvipng don't handle alpha channel properly.
+        # Use True to correct and flush ~/.matplotlib/tex.cache before 
+        # testing
+        dvipnghack = False
+
+[axes]
+    # default face and edge color, default tick sizes,
+    # default fontsizes for ticklabels, and so on.  See
+    # http://matplotlib.sourceforge.net/matplotlib.axes.html#Axes
+    
+    # whether to clear the axes by default
+    hold = True
+    
+    # axes background color
+    facecolor = 'white'
+    
+    # axes edge color
+    edgecolor = 'black'
+    
+    # edge linewidth
+    linewidth = 1.0
+    
+    # display grid on regular or polar axes
+    grid = False
+    polargrid = True
+    
+    # fontsize of the axes title and labels
+    titlesize = 'large'
+    labelsize = 'medium'
+    
+    labelcolor = 'black'
+    
+    # whether axis gridlines and ticks are below the axes elements 
+    # (lines, text, etc)
+    axisbelow = False
+    
+    [[formatter]]
+        # use scientific notation if log10 of the axis range is smaller 
+        # than the first or larger than the second
+        limits = [-7.0, 7.0]
+
+[xticks]
+    # see http://matplotlib.sourceforge.net/matplotlib.axis.html#Ticks
+    color = 'k'
+    labelsize = 'small'
+    
+    # direction: in or out
+    direction = 'in'
+    
+    [[major]]
+        # in points
+        size = 4.0
+        pad = 4.0
+    
+    [[minor]]
+        # in points
+        size = 2.0
+        pad = 4.0
+
+[yticks]
+    color = 'k'
+    labelsize = 'small'
+    
+    # direction: in or out
+    direction = 'in'
+    
+    [[major]]
+        # in points
+        size = 4.0
+        pad = 4.0
+    
+    [[minor]]
+        # in points
+        size = 2.0
+        pad = 4.0
+
+[grid]
+    color = 'black'
+    
+    # '-','--','-.', ':', 'steps', '', ' ', or None
+    linestyle = ':'
+    
+    linewidth = 0.5
+
+[legend]
+    isaxes = True
+    
+    # the number of points in the legend line
+    numpoints = 2
+    
+    fontsize = 'medium'
+    
+    # the fractional whitespace inside the legend border
+    pad = 0.20000000000000001
+    
+    # the relative size of legend markers vs. original
+    # the following dimensions are in axes coords
+    markerscale = 1.0
+    
+    # the vertical space between the legend entries
+    labelsep = 0.01
+    
+    # the length of the legend lines
+    handlelen = 0.050000000000000003
+    
+    # the space between the legend line and legend text
+    handletextsep = 0.02
+    
+    # the border between the axes and legend edge
+    axespad = 0.02
+    
+    # Show a shadow behind the legend
+    shadow = False
+
+[figure]
+    # See http://matplotlib.sourceforge.net/matplotlib.figure.html#Figure
+    
+    # figure size in inches
+    figsize = [8.0, 6.0]
+    
+    # figure dots per inch
+    dpi = 80.0
+    
+    # figure face and edge colors; '0.75' is scalar gray
+    facecolor = '0.75'
+    edgecolor = 'white'
+    
+    [[subplot]]
+        # The figure subplot parameters.  All dimensions are fraction of the
+        # figure width or height
+        left = 0.125
+        right = 0.90000000000000002
+        bottom = 0.10000000000000001
+        top = 0.90000000000000002
+        
+        # the amount of width or height reserved for blank space between 
+        #subplots
+        wspace = 0.20000000000000001
+        hspace = 0.20000000000000001
+
+
+[image]
+    # equal | auto | a number
+    aspect = 'equal'
+    
+    # see help(imshow) for options
+    interpolation = 'bilinear'
+    cmap = 'jet'
+    
+    # the size of the colormap lookup table
+    lut = 256
+    
+    # 'lower' or 'upper'
+    origin = 'upper'
+
+
+[contour]
+    # 'dashed' or 'solid'
+    negative_linestyle = 'dashed'
+
+[savefig]
+    # Saving figures
+    # the default savefig params can be different for the GUI backends.
+    # Eg, you may want a higher resolution, or to make the figure
+    # background white
+    
+    # figure dots per inch
+    dpi = 100.0
+    
+    # figure face and edge colors
+    facecolor = 'white'
+    edgecolor = 'white'
+
+[verbose]
+    # Set the verbose flags.  This controls how much information
+    # matplotlib gives you at runtime and where it goes.  The verbosity
+    # levels are: silent, helpful, debug, debug-annoying.  Any level is
+    # inclusive of all the levels below it.  If you setting is debug,
+    # you'll get all the debug and helpful messages.  When submitting
+    # problems to the mailing-list, please set verbose to helpful or debug
+    # and paste the output into your report.
+    #
+    # The fileo gives the destination for any calls to verbose.report.
+    # These objects can a filename, or a filehandle like sys.stdout.
+    #
+    # You can override the rc default verbosity from the command line by
+    # giving the flags --verbose-LEVEL where LEVEL is one of the legal
+    # levels, eg --verbose-helpful.
+    #
+    # You can access the verbose instance in your code
+    #   from matplotlib import verbose.
+    
+    # 'silent', 'helpful', 'debug', or 'debug-annoying'
+    level = 'silent'
+    
+    # a log filename, 'sys.stdout' or 'sys.stderr'
+    fileo = 'sys.stdout'
\ No newline at end of file
Index: mplconfig.py
===================================================================
--- mplconfig.py	(revision 2532)
+++ mplconfig.py	(working copy)
@@ -1,44 +1,378 @@
 import enthought.traits.api as T
+import os, pytz, tempfile
+from matplotlib import colors as mcolors
+from matplotlib import cbook
 
+is_string_like = cbook.is_string_like
+
 # import/reload base modules for interactive testing/development
 import tconfig; reload(tconfig)
 from tconfig import TConfig, ReadOnlyTConfig
 
 # Code begins
 
-standard_color = T.Trait ('black',
-                          {'black': (0.0, 0.0, 0.0, 1.0),
-                           'blue': (0.0, 0.0, 1.0, 1.0),
-                           'cyan': (0.0, 1.0, 1.0, 1.0),
-                           'green': (0.0, 1.0, 0.0, 1.0),
-                           'magenta': (1.0, 0.0, 1.0, 1.0),
-                           'orange': (0.8, 0.196, 0.196, 1.0),
-                           'purple': (0.69, 0.0, 1.0, 1.0),
-                           'red': (1.0, 0.0, 0.0, 1.0),
-                           'violet': (0.31, 0.184, 0.31, 1.0),
-                           'yellow': (1.0, 1.0, 0.0, 1.0),
-                           'white': (1.0, 1.0, 1.0, 1.0),
-                           'transparent': (1.0, 1.0, 1.0, 0.0) } )
+def _is_writable_dir(p):
+    """
+    p is a string pointing to a putative writable dir -- return True p
+    is such a string, else False
+    """
+    try: p + ''  # test is string like
+    except TypeError: return False
+    try:
+        t = tempfile.TemporaryFile(dir=p)
+        t.write('1')
+        t.close()
+    except OSError: return False
+    else: return True
 
+class IsWritableDir(T.TraitHandler):
+    """
+    """
+
+    def validate(self, object, name, value):
+        if _is_writable_dir(value):
+            return value
+        else:
+            raise OSError('%s is not a writable directory'%value)
+
+    def info(self):
+        return "a writable directory"
+
+def get_home():
+    """Find user's home directory if possible.
+    Otherwise raise error.
+
+    :see:  http://mail.python.org/pipermail/python-list/2005-February/263921.html
+    """
+    path=''
+    try:
+        path=os.path.expanduser("~")
+    except:
+        pass
+    if not os.path.isdir(path):
+        for evar in ('HOME', 'USERPROFILE', 'TMP'):
+            try:
+                path = os.environ[evar]
+                if os.path.isdir(path):
+                    break
+            except: pass
+    if path:
+        return path
+    else:
+        raise RuntimeError('please define environment variable $HOME')
+
+def get_configdir():
+    """
+    Return the string representing the configuration dir.
+
+    default is HOME/.matplotlib.  you can override this with the
+    MPLCONFIGDIR environment variable
+    """
+
+    configdir = os.environ.get('MPLCONFIGDIR')
+    if configdir is not None:
+        if not _is_writable_dir(configdir):
+            raise RuntimeError('Could not write to MPLCONFIGDIR="%s"'%configdir)
+        return configdir
+
+    h = get_home()
+    p = os.path.join(get_home(), '.matplotlib')
+
+    if os.path.exists(p):
+        if not _is_writable_dir(p):
+            raise RuntimeError("'%s' is not a writable dir; you must set %s/.matplotlib to be a writable dir.  You can also set environment variable MPLCONFIGDIR to any writable directory where you want matplotlib data stored "%h)
+    else:
+        if not _is_writable_dir(h):
+            raise RuntimeError("Failed to create %s/.matplotlib; consider setting MPLCONFIGDIR to a writable directory for matplotlib configuration data"%h)
+
+        os.mkdir(p)
+
+    return p
+
+backends = {'tkagg': 'TkAgg',
+            'gtkagg': 'GTKAgg',
+            'gtkcairo': 'GTKCairo',
+            'qt4agg': 'Qt4Agg',
+            'qtagg': 'QtAgg',
+            'wxagg': 'WxAgg',
+            'agg': 'Agg',
+            'cairo': 'Cairo',
+            'ps': 'PS',
+            'pdf': 'PDF',
+            'svg': 'SVG',
+            'template': 'Templates' }
+
+class BackendHandler(T.TraitHandler):
+    """
+    """
+
+    def validate(self, object, name, value):
+        try:
+            return backends[value.lower()]
+        except:
+            return self.error(object, name, value)
+
+    def info(self):
+        be = backends.keys()
+        be.sort
+        return "one of %s"% ', '.join('%s'%i for i in be)
+
+class BoolHandler(T.TraitHandler):
+    """
+    """
+
+    bools = {'true': True,
+             'yes': True,
+             'y' : True,
+             'on': True,
+             1: True,
+             True: True,
+             'false': False,
+             'no': False,
+             'n': False,
+             'off': False,
+             0: False,
+             False: False}
+       
+    def validate(self, object, name, value):
+        try:
+            return self.bools[value]
+        except:
+            return self.error(object, name, value)
+
+    def info(self):
+        return "one of %s"% ', '.join('%s'%i for i in self.bools.keys())
+
+class ColorHandler(T.TraitHandler):
+    """
+    This is a clever little traits mechanism -- users can specify the
+    color as any mpl color, and the traited object will keep the
+    original color, but will add a new attribute with a '_' postfix
+    which is the color rgba tuple.
+
+    Eg
+
+    class C(HasTraits):
+        fillcolor = traits.Trait('black', ColorHandler())
+
+    c = C()
+    c.fillcolor = 'red'
+    print c.fillcolor    # prints red
+    print c.fillcolor_   # print (1,0,0,1)
+    """
+    is_mapped = True
+
+    def post_setattr(self, object, name, value):
+        object.__dict__[ name + '_' ] = self.mapped_value( value )
+
+    def mapped_value(self, value ):
+        if value is None: return None
+        if is_string_like(value): value = value.lower()
+        return mcolors.colorConverter.to_rgba(value)
+       
+    def validate(self, object, name, value):
+        try:
+            self.mapped_value(value)
+        except ValueError:
+            return self.error(object, name, value)
+        else:            
+            return value
+
+    def info(self):
+        return """\
+any valid matplotlib color, eg an abbreviation like 'r' for red, a full
+name like 'orange', a hex color like '#efefef', a grayscale intensity
+like '0.5', or an RGBA tuple (1,0,0,1)"""
+
+
+colormaps = ['Accent', 'Accent_r', 'Blues', 'Blues_r', 'BrBG', 'BrBG_r', 'BuGn',
+             'BuGn_r', 'BuPu', 'BuPu_r', 'Dark2', 'Dark2_r', 'GnBu', 'GnBu_r', 
+             'Greens', 'Greens_r', 'Greys', 'Greys_r', 'LUTSIZE', 'OrRd', 
+             'OrRd_r', 'Oranges', 'Oranges_r', 'PRGn', 'PRGn_r', 'Paired', 
+             'Paired_r', 'Pastel1', 'Pastel1_r', 'Pastel2', 'Pastel2_r', 'PiYG',
+             'PiYG_r', 'PuBu', 'PuBuGn', 'PuBuGn_r', 'PuBu_r', 'PuOr', 'PuOr_r',
+             'PuRd', 'PuRd_r', 'Purples', 'Purples_r', 'RdBu', 'RdBu_r', 'RdGy',
+             'RdGy_r', 'RdPu', 'RdPu_r', 'RdYlBu', 'RdYlBu_r', 'RdYlGn', 
+             'RdYlGn_r', 'Reds', 'Reds_r', 'Set1', 'Set1_r', 'Set2', 'Set2_r', 
+             'Set3', 'Set3_r', 'Spectral', 'Spectral_r', 'YlGn', 'YlGnBu', 
+             'YlGnBu_r', 'YlGn_r', 'YlOrBr', 'YlOrBr_r', 'YlOrRd', 'YlOrRd_r', 
+             'autumn', 'autumn_r', 'binary', 'binary_r', 'bone', 'bone_r', 
+             'cbook', 'cmapdat_r', 'cmapname', 'cmapname_r', 'cmapnames', 
+             'colors', 'cool', 'cool_r', 'copper', 'copper_r', 'datad', 'flag', 
+             'flag_r', 'gist_earth', 'gist_earth_r', 'gist_gray', 'gist_gray_r',
+             'gist_heat', 'gist_heat_r', 'gist_ncar', 'gist_ncar_r', 
+             'gist_rainbow', 'gist_rainbow_r', 'gist_stern', 'gist_stern_r', 
+             'gist_yarg', 'gist_yarg_r', 'gray', 'gray_r', 'hot', 'hot_r', 
+             'hsv', 'hsv_r', 'jet', 'jet_r', 'ma', 'mpl', 'pink', 'pink_r', 
+             'prism', 'prism_r', 'revcmap', 'spectral', 'spectral_r', 'spring', 
+             'spring_r', 'summer', 'summer_r', 'winter', 'winter_r']
+
 class MPLConfig(TConfig):
 
     # Valid backends, first is default
-    backend = T.Trait('TkAgg','WXAgg','GTKAgg','QtAgg','Qt4Agg')
-    interactive = T.Bool(True)
+    interactive = T.Trait(False, BoolHandler())
+    toolbar = T.Trait('toolbar2', None)
+    timezone = T.Trait('UTC', pytz.all_timezones)
+    datapath = T.Trait(get_configdir(), IsWritableDir())
     
+    class backend(TConfig):
+        use = T.Trait('TkAgg', BackendHandler())
+        
+        class cairo(TConfig):
+            format = T.Trait('png', 'png', 'ps', 'pdf', 'svg')
+        
+        class tk(TConfig):
+            window_focus = T.false
+            pythoninspect = T.false
+        
+        class ps(TConfig):
+            papersize = T.Trait('auto', 'letter', 'legal', 'ledger', 
+                'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9', 'A10',
+                'B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'B10')
+            useafm = T.false
+            fonttype = T.Trait(3, 42)
+            
+            class distiller(TConfig):
+                use = T.Trait(None, 'ghostscript', 'xpdf')
+                resolution = T.Float(6000)
+        
+        class pdf(TConfig):
+            compression = T.Range(0, 9, 6)
+            fonttype = T.Trait(3, 42)
+        
+        class svg(TConfig):
+            image_inline = T.true
+            image_noscale = T.false
+            embed_chars = T.false
+    
     class InitOnly(TConfig, ReadOnlyTConfig):
         """Things that can only be set at init time"""
-        numerix = T.Str('numpy')
+        numerix = T.Trait('numpy', 'numeric', 'numarray')
+        maskedarray = T.false
 
     class lines(TConfig):
-        linewidth = T.Float(2.0)
-        linestyle = T.Trait('-','=','^')
+        linewidth = T.Float(1.0)
+        linestyle = T.Trait('-','--','-.', ':', 'steps', '', ' ', None)
+        color = T.Trait('blue',ColorHandler())
+        solid_joinstyle = T.Trait('miter', 'round', 'bevel')
+        solid_capstyle = T.Trait('butt', 'round', 'projecting')
+        dash_joinstyle = T.Trait('miter', 'round', 'bevel')
+        dash_capstyle = T.Trait('butt', 'round', 'projecting')
+        marker = T.Trait(None, 'o', '.', ',', '^', 'v', '<', '>', 's', '+', 'x', 'D',
+                         'd', '1', '2', '3', '4', 'h', 'H', 'p', '|', '_')
+        markeredgewidth = T.Float(0.5)
+        markersize = T.Float(6)
+        antialiased = T.true
 
+    class patch(TConfig):
+        linewidth = T.Float(1.0)
+        facecolor = T.Trait('blue',ColorHandler())
+        edgecolor = T.Trait('black',ColorHandler())
+        antialiased = T.true 
+
+    class font(TConfig):
+        family = T.Trait('sans-serif', 'serif', 'cursive', 'fantasy', 
+                         'monospace')
+        style = T.Trait('normal', 'italic', 'oblique')
+        variant = T.Trait('normal', 'small-caps')
+        weight = T.Trait('normal', 'bold', 'bolder', 'lighter',
+                          100, 200, 300, 400, 500, 600, 700, 800, 900)
+        stretch = T.Trait('ultra-condensed', 'extra-condensed', 'condensed',
+                         'semi-condensed', 'normal', 'semi-expanded',
+                         'expanded', 'extra-expanded', 'ultra-expanded',
+                         'wider', 'narrower')
+        size = T.Float(12.0)
+        serif = T.ListStr(["Bitstream Vera Serif", "New Century Schoolbook", 
+                 "Century Schoolbook L", "Utopia", "ITC Bookman", "Bookman", 
+                 "Nimbus Roman No9 L", "Times New Roman", "Times", "Palatino", 
+                 "Charter", "serif"])
+        sans_serif = T.ListStr(["Bitstream Vera Sans", "Lucida Grande", "Verdana", 
+                      "Geneva", "Lucid", "Arial", "Helvetica", "Avant Garde", 
+                      "sans-serif"])
+        cursive = T.ListStr(["Apple Chancery", "Textile", "Zapf Chancery", "Sand", 
+                   "cursive"])
+        fantasy = T.ListStr(["Comic Sans MS", "Chicago", "Charcoal", "Impact", "Western", 
+                   "fantasy"])
+        monospace = T.ListStr(["Bitstream Vera Sans Mono", "Andale Mono", "Nimbus Mono L",
+                     "Courier New", "Courier", "Fixed", "Terminal", "monospace"])
+
+    class text(TConfig):
+        color = T.Trait('black',ColorHandler())
+        usetex = T.false
+        
+        class latex(TConfig):
+            unicode = T.false
+            preamble = T.ListStr([])
+            dvipnghack = T.false
+
+    class axes(TConfig):
+        hold = T.Trait(True, BoolHandler())
+        facecolor = T.Trait('white',ColorHandler())
+        edgecolor = T.Trait('black',ColorHandler())
+        linewidth = T.Float(1.0)
+        grid = T.Trait(True, BoolHandler())
+        polargrid = T.Trait(True, BoolHandler())
+        titlesize = T.Trait('large', 'xx-small', 'x-small', 'small', 'medium',
+                            'large', 'x-large', 'xx-large', T.Float)
+        labelsize = T.Trait('medium', 'xx-small', 'x-small', 'small', 'medium',
+                            'large', 'x-large', 'xx-large', T.Float)
+        labelcolor = T.Trait('black',ColorHandler())
+        axisbelow = T.false
+        
+        class formatter(TConfig):
+            limits = T.List(T.Float, [-7, 7], minlen=2, maxlen=2)
+    
+    class xticks(TConfig):
+        color = T.Trait('black',ColorHandler())
+        labelsize = T.Trait('small', 'xx-small', 'x-small', 'small', 'medium',
+                            'large', 'x-large', 'xx-large', T.Float)
+        direction = T.Trait('in', 'out')
+        
+        class major(TConfig):
+            size = T.Float(4)
+            pad = T.Float(4)
+
+        class minor(TConfig):
+            size = T.Float(2)
+            pad = T.Float(4)
+
+    class yticks(TConfig):
+        color = T.Trait('black',ColorHandler())
+        labelsize = T.Trait('small', 'xx-small', 'x-small', 'small', 'medium',
+                            'large', 'x-large', 'xx-large', T.Float)
+        direction = T.Trait('in', 'out')
+        
+        class major(TConfig):
+            size = T.Float(4)
+            pad = T.Float(4)
+
+        class minor(TConfig):
+            size = T.Float(2)
+            pad = T.Float(4)
+
+    class grid(TConfig):
+        color = T.Trait('black',ColorHandler())
+        linestyle = T.Trait('-','--','-.', ':', 'steps', '', ' ')
+        linewidth = T.Float(0.5)
+
+    class legend(TConfig):
+        isaxes = T.true
+        numpoints = T.Int(3)
+        fontsize = T.Trait('medium', 'xx-small', 'x-small', 'small', 'medium',
+                           'large', 'x-large', 'xx-large', T.Float)
+        pad = T.Float(0.2)
+        markerscale = T.Float(1.0)
+        labelsep = T.Float(0.01)
+        handlelen = T.Float(0.05)
+        handletextsep = T.Float(0.02)
+        axespad = T.Float(0.02)
+        shadow = T.false
+
     class figure(TConfig):
-        figsize = T.ListFloat([6.4,4.8])  # figure size in inches
-        dpi = T.Int(100)            # figure dots per inch
-        facecolor = T.Float(0.75)    # figure facecolor; 0.75 is scalar gray
-        edgecolor = T.Trait('red',standard_color)
+        figsize = T.List(T.Float, [8,6], maxlen=2, minlen=2)
+        dpi = T.Float(80)
+        facecolor = T.Trait('0.75',ColorHandler())
+        edgecolor = T.Trait('white',ColorHandler())
 
         class subplot(TConfig):
             """The figure subplot parameters.  All dimensions are fraction
@@ -47,3 +381,33 @@
             right = T.Float(0.9)
             bottom = T.Float(0.1)
             top = T.Float(0.9)
+            wspace = T.Float(0.2)
+            hspace = T.Float(0.2)
+
+    class image(TConfig):
+        aspect = T.Trait('equal', 'auto')
+        interpolation = T.Trait('bilinear', 'nearest', 'bicubic', 'spline16', 
+                                'spline36', 'hanning', 'hamming', 'hermite', 
+                                'kaiser', 'quadric', 'catrom', 'gaussian', 
+                                'bessel', 'mitchell', 'sinc', 'lanczos', 
+                                'blackman')
+        cmap = T.Trait('jet', *colormaps)
+        lut = T.Int(256)
+        origin = T.Trait('upper', 'lower')
+
+    class contour(TConfig):
+        negative_linestyle = T.Trait('dashed', 'solid')
+    
+    class savefig(TConfig):
+        dpi = T.Float(100)
+        facecolor = T.Trait('white',ColorHandler())
+        edgecolor = T.Trait('white',ColorHandler())
+    
+    class verbose(TConfig):
+        level = T.Trait('silent', 'helpful', 'debug', 'debug-annoying')
+        fileo = T.Trait('sys.stdout', T.File)
+
+if __name__ == "__main__":
+    mplrc = MPLConfig()
+    mplrc.backend.pdf.compression = 1.1
+    print mplrc
Index: mplrc.conf.backup
===================================================================
--- mplrc.conf.backup	(revision 0)
+++ mplrc.conf.backup	(revision 0)
@@ -0,0 +1,443 @@
+### MATPLOTLIBRC FORMAT
+
+# This is a sample matplotlib configuration file.  It should be placed
+# in HOME/.matplotlib/matplotlibrc (unix/linux like systems) and
+# C:\Documents and Settings\yourname\.matplotlib (win32 systems)
+#
+# By default, the installer will overwrite the existing file in the
+# install path, so if you want to preserve your's, please move it to
+# your HOME dir and set the environment variable if necessary.
+#
+# This file is best viewed in a editor which supports ini or conf 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
+#
+# val should be valid python syntax, just as you would use when setting
+# properties using rcParams. This should become more obvious by inspecting 
+# the default values listed herein.
+#
+# 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 or ff00ff
+#  - a scalar grayscale intensity such as 0.75
+#  - a legal html color name, eg red, blue, darkslategray
+
+#### CONFIGURATION BEGINS HERE
+# see http://matplotlib.sourceforge.net/interactive.html
+interactive = False
+
+# None | classic | toolbar2
+toolbar = 'toolbar2'
+
+# a pytz timezone string, eg US/Central or Europe/Paris
+timezone = 'UTC'
+
+# Where your matplotlib data lives if you installed to a non-default 
+#location.  This is where the matplotlib fonts, bitmaps, etc reside
+datapath = '/home/darren/.matplotlib'
+
+[backend]
+    # 'GTKAgg', 'GTKCairo', 'QtAgg', 'Qt4Agg', 'TkAgg', 'Agg', 
+    # 'Cairo', 'PS', 'PDF', 'SVG'
+    use = 'qtAgg'
+    
+    [[cairo]]
+        # png, ps, pdf, svg
+        format = 'png'
+    
+    [[tk]]
+        # Maintain shell focus for TkAgg
+        window_focus = False
+
+        # tk sets PYTHONINSEPCT
+        pythoninspect = False
+    
+    [[ps]]
+        # auto, letter, legal, ledger, A0-A10, B0-B10
+        papersize = 'letter'
+
+        # use of afm fonts, results in smaller files
+        useafm = False
+
+        # 3 (Type3) or 42 (TrueType)
+        fonttype = 3
+        
+        [[[distiller]]]
+            # can be: None, ghostscript or xpdf
+            # xpdf intended for production of publication quality 
+            # files, but requires ghostscript, xpdf and ps2eps
+            use = None
+
+            # distiller resolution, dpi
+            resolution = 6000.0
+    
+    [[pdf]]
+        # integer from 0 to 9
+        # 0 disables compression (good for debugging)
+        compression = 6
+
+        # 3 (Type3) or 42 (TrueType)
+        fonttype = 3
+    
+    [[svg]]
+        # write raster image data directly into the svg file
+        image_inline = True
+
+        # suppress scaling of raster data embedded in SVG
+        image_noscale = False
+
+        # embed character outlines in the SVG file
+        embed_chars = False
+
+[InitOnly]
+    # numpy, Numeric or numarray
+    numerix = 'numpy'
+
+    # True to use external maskedarray module instead of numpy.ma; this is a 
+    # temporary setting for testing maskedarray.
+    maskedarray = False
+
+[lines]
+    # See http://matplotlib.sourceforge.net/matplotlib.lines.html for more
+    # information on line properties.
+
+    # line width in points
+    linewidth = 1.0
+
+    # '-','--','-.', ':', 'steps', '', ' ', or None
+    linestyle = '-'
+
+    color = 'blue'
+
+    # The default marker: None, 'o', '.', ',', '^', 'v', '<', '>', 's', '+',
+    # 'x', 'D', 'd', '1', '2', '3', '4', 'h', 'H', 'p', '|', '_'
+    marker = None
+
+    # the line width around the marker symbol
+    markeredgewidth = 0.5
+
+    # markersize, in points
+    markersize = 6.0
+
+    # miter|round|bevel
+    dash_joinstyle = 'miter'
+    solid_joinstyle = 'miter'
+
+    # butt|round|projecting
+    dash_capstyle = 'butt'
+    solid_capstyle = 'projecting'
+
+    # render antialised lines (no jaggies)
+    antialiased = True
+
+[patch]
+    # Patches are graphical objects that fill 2D space, like polygons or
+    # circles.  See
+    # http://matplotlib.sourceforge.net/matplotlib.patches.html for more
+    # information on patch properties
+
+    # edge width in points
+    linewidth = 1.0
+
+    facecolor = 'blue'
+    edgecolor = 'black'
+
+    # render antialised lines (no jaggies)
+    antialiased = True
+
+[font]
+    # font properties used by text.Text.  See
+    # http://matplotlib.sourceforge.net/matplotlib.font_manager.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.
+    family = 'sans-serif'
+
+    # 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.
+    style = 'normal'
+
+    # 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.
+    variant = 'normal'
+
+    # 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.
+    weight = 'normal'
+
+    # 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.
+    stretch = 'normal'
+
+    # The font.size property is the default font size for text, given in pts.
+    # 12pt 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
+    size = 12.0
+
+    # A search list for each of the font families
+    serif = ['Bitstream Vera Serif', 'New Century Schoolbook', 'Century Schoolbook L', 'Utopia', 'ITC Bookman', 'Bookman', 'Nimbus Roman No9 L', 'Times New Roman', 'Times', 'Palatino', 'Charter', 'serif']
+    sans_serif = ['Bitstream Vera Sans', 'Lucida Grande', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']
+    cursive = ['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'cursive']
+    fantasy = ['Comic Sans MS', 'Chicago', 'Charcoal', 'Impact', 'Western', 'fantasy']
+    monospace = ['Bitstream Vera Sans Mono', 'Andale Mono', 'Nimbus Mono L', 'Courier New', 'Courier', 'Fixed', 'Terminal', 'monospace']
+
+[text]
+    # text properties used by text.Text.  See
+    # http://matplotlib.sourceforge.net/matplotlib.text.html for more
+    # information on text properties
+    color = 'black'
+
+    ### LaTeX customizations
+    # See http://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex
+
+    # 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
+    usetex = False
+
+    [[latex]]
+        # use "ucs" and "inputenc" LaTeX packages for 
+        # handling unicode strings.
+        unicode = False
+
+        # IMPROPER USE OF THE PREAMBLE 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.
+        # preamble is a comma separated list of LaTeX
+        # statements that are included in the LaTeX document 
+        # preamble.
+        # An example:
+        # text.latex.preamble = ["\usepackage{bm}", "\usepackage{euler}"]
+        # 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
+        preamble = []
+
+        # some versions of dvipng don't handle alpha channel properly.
+        # Use True to correct and flush ~/.matplotlib/tex.cache before 
+        # testing
+        dvipnghack = False
+
+[axes]
+    # default face and edge color, default tick sizes,
+    # default fontsizes for ticklabels, and so on.  See
+    # http://matplotlib.sourceforge.net/matplotlib.axes.html#Axes
+
+    # whether to clear the axes by default
+    hold = True
+
+    # axes background color
+    facecolor = 'white'
+
+    # axes edge color
+    edgecolor = 'black'
+
+    # edge linewidth
+    linewidth = 1.0
+
+    # display grid on regular or polar axes
+    grid = False
+    polargrid = True
+
+    # fontsize of the axes title and labels
+    titlesize = 'large'
+    labelsize = 'medium'
+
+    labelcolor = 'black'
+
+    # whether axis gridlines and ticks are below the axes elements 
+    # (lines, text, etc)
+    axisbelow = False
+
+    [[formatter]]
+        # use scientific notation if log10 of the axis range is smaller 
+        # than the first or larger than the second
+        limits = [-7.0, 7.0]
+
+[xticks]
+    # see http://matplotlib.sourceforge.net/matplotlib.axis.html#Ticks
+    color = 'k'
+    labelsize = 'small'
+
+    # direction: in or out
+    direction = 'in'
+
+    [[major]]
+        # in points
+        size = 4.0
+        pad = 4.0
+
+    [[minor]]
+        # in points
+        size = 2.0
+        pad = 4.0
+
+[yticks]
+    color = 'k'
+    labelsize = 'small'
+
+    # direction: in or out
+    direction = 'in'
+
+    [[major]]
+        # in points
+        size = 4.0
+        pad = 4.0
+
+    [[minor]]
+        # in points
+        size = 2.0
+        pad = 4.0
+
+[grid]
+    color = 'black'
+
+    # '-','--','-.', ':', 'steps', '', ' ', or None
+    linestyle = ':'
+
+    linewidth = 0.5
+
+[legend]
+    isaxes = True
+
+    # the number of points in the legend line
+    numpoints = 2
+
+    fontsize = 'medium'
+
+    # the fractional whitespace inside the legend border
+    pad = 0.20000000000000001
+
+    # the relative size of legend markers vs. original
+    # the following dimensions are in axes coords
+    markerscale = 1.0
+
+    # the vertical space between the legend entries
+    labelsep = 0.01
+
+    # the length of the legend lines
+    handlelen = 0.050000000000000003
+
+    # the space between the legend line and legend text
+    handletextsep = 0.02
+
+    # the border between the axes and legend edge
+    axespad = 0.02
+
+    # Show a shadow behind the legend
+    shadow = False
+
+[figure]
+    # See http://matplotlib.sourceforge.net/matplotlib.figure.html#Figure
+
+    # figure size in inches
+    figsize = [8.0, 6.0]
+
+    # figure dots per inch
+    dpi = 80.0
+
+    # figure face and edge colors; '0.75' is scalar gray
+    facecolor = '0.75'
+    edgecolor = 'white'
+
+    [[subplot]]
+        # The figure subplot parameters.  All dimensions are fraction of the
+        # figure width or height
+        left = 0.125
+        right = 0.90000000000000002
+        bottom = 0.10000000000000001
+        top = 0.90000000000000002
+
+        # the amount of width or height reserved for blank space between 
+        #subplots
+        wspace = 0.20000000000000001
+        hspace = 0.20000000000000001
+
+
+[image]
+    # equal | auto | a number
+    aspect = 'equal'
+
+    # see help(imshow) for options
+    interpolation = 'bilinear'
+    cmap = 'jet'
+
+    # the size of the colormap lookup table
+    lut = 256
+
+    # 'lower' or 'upper'
+    origin = 'upper'
+
+
+[contour]
+    # 'dashed' or 'solid'
+    negative_linestyle = 'dashed'
+
+[savefig]
+    # Saving figures
+    # the default savefig params can be different for the GUI backends.
+    # Eg, you may want a higher resolution, or to make the figure
+    # background white
+
+    # figure dots per inch
+    dpi = 100.0
+
+    # figure face and edge colors
+    facecolor = 'white'
+    edgecolor = 'white'
+
+[verbose]
+    # Set the verbose flags.  This controls how much information
+    # matplotlib gives you at runtime and where it goes.  The verbosity
+    # levels are: silent, helpful, debug, debug-annoying.  Any level is
+    # inclusive of all the levels below it.  If you setting is debug,
+    # you'll get all the debug and helpful messages.  When submitting
+    # problems to the mailing-list, please set verbose to helpful or debug
+    # and paste the output into your report.
+    #
+    # The fileo gives the destination for any calls to verbose.report.
+    # These objects can a filename, or a filehandle like sys.stdout.
+    #
+    # You can override the rc default verbosity from the command line by
+    # giving the flags --verbose-LEVEL where LEVEL is one of the legal
+    # levels, eg --verbose-helpful.
+    #
+    # You can access the verbose instance in your code
+    #   from matplotlib import verbose.
+
+    # 'silent', 'helpful', 'debug', or 'debug-annoying'
+    level = 'silent'
+
+    # a log filename, 'sys.stdout' or 'sys.stderr'
+    fileo = 'sys.stdout'
\ No newline at end of file
Index: mpl.conf
===================================================================
--- mpl.conf	(revision 2532)
+++ mpl.conf	(working copy)
@@ -1,26 +0,0 @@
-# Top-level
-backend = "TkAgg"
-interactive = False
-
-# Things that can only be set at init time, they become read-only afterwards
-[InitOnly]
-numerix = "numpy"
-
-# Other sections
-[lines]
-linewidth = 2.0
-linestyle = '-'
-
-[figure]
-figsize   = [6.4,4.8]  # figure size in inches
-dpi       = 100        # figure dots per inch
-facecolor = 0.75       # figure facecolor; 0.75 is scalar gray
-edgecolor = "white"    # figure edgecolor
-
-    [[subplot]]
-    # The figure subplot parameters.  All dimensions are fraction of the
-    # figure width or height
-    left  = 0.125  # the left side of the subplots of the figure
-    right = 0.9    # the right side of the subplots of the figure
-    bottom = 0.1   # the bottom of the subplots of the figure
-    top = 0.9      # the top of the subplots of the figure
Index: mpl2.conf
===================================================================
--- mpl2.conf	(revision 2532)
+++ mpl2.conf	(working copy)
@@ -1,17 +0,0 @@
-# Top-level
-backend = 'QtAgg'
-
-# Things that can only be set at init time, they become read-only afterwards
-[InitOnly]
-numerix = "numpy"
-
-# Other sections
-[lines]
-linewidth = 2.0
-
-[figure]
-    [[subplot]]
-    # The figure subplot parameters.  All dimensions are fraction of the
-    # figure width or height
-    left  = 0.25  # the left side of the subplots of the figure
-    right = 0.75    # the right side of the subplots of the figure
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to