diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index 90cbf345e4fd..90b208881d07 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -71,7 +71,7 @@ def validate_path_exists(s): def validate_bool(b): """Convert b to a boolean or raise""" - if type(b) is str: + if isinstance(b, basestring): b = b.lower() if b in ('t', 'y', 'yes', 'on', 'true', '1', 1, True): return True @@ -82,8 +82,8 @@ def validate_bool(b): def validate_bool_maybe_none(b): - 'Convert b to a boolean or raise' - if type(b) is str: + """Convert b to a boolean, None, or raise""" + if isinstance(b, basestring): b = b.lower() if b == 'none': return None @@ -144,6 +144,7 @@ def validate_backend(s): else: return _validate_standard_backends(s) + validate_qt4 = ValidateInStrings('backend.qt4', ['PyQt4', 'PySide']) @@ -177,7 +178,7 @@ def __init__(self, n): def __call__(self, s): """return a seq of n floats or raise""" - if type(s) is str: + if isinstance(s, basestring): ss = s.split(',') if len(ss) != self.n: raise ValueError( @@ -200,7 +201,7 @@ def __init__(self, n): def __call__(self, s): """return a seq of n ints or raise""" - if type(s) is str: + if isinstance(s, basestring): ss = s.split(',') if len(ss) != self.n: raise ValueError( @@ -252,20 +253,28 @@ def validate_color(s): def validate_colorlist(s): 'return a list of colorspecs' - if type(s) is str: + if isinstance(s, basestring): return [validate_color(c.strip()) for c in s.split(',')] else: assert type(s) in [list, tuple] return [validate_color(c) for c in s] +def validate_string(s): + """if s is a string, returns a clean string, else raises a TypeError""" + if isinstance(s, basestring) : + return s.strip("'").strip() + else : + raise TypeError('%s should be a bytestring or unicode' % (s)) + + def validate_stringlist(s): 'return a list' - if type(s) in (str, unicode): - return [v.strip() for v in s.split(',')] + if isinstance(s, basestring): + return [validate_string(v) for v in s.split(',')] else: assert type(s) in [list, tuple] - return [str(v) for v in s] + return [validate_string(v) for v in s] validate_orientation = ValidateInStrings( @@ -282,7 +291,7 @@ def validate_aspect(s): def validate_fontsize(s): - if type(s) is str: + if isinstance(s, basestring): s = s.lower() if s in ['xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large', 'smaller', 'larger']: @@ -335,7 +344,7 @@ def update_savefig_format(value): def validate_ps_distiller(s): - if type(s) is str: + if isinstance(s, basestring): s = s.lower() if s in ('none', None): @@ -395,17 +404,20 @@ def validate_tkpythoninspect(s): def deprecate_svg_embed_char_paths(value): warnings.warn("svg.embed_char_paths is deprecated. Use " "svg.fonttype instead.") + return value validate_svg_fonttype = ValidateInStrings('fonttype', ['none', 'path', 'svgfont']) def validate_hinting(s): - if s in (True, False): - return s - if s.lower() in ('auto', 'native', 'either', 'none'): - return s.lower() - raise ValueError("hinting should be 'auto', 'native', 'either' or 'none'") + try : + return validate_bool(s) + except ValueError : + if s.lower() in ('auto', 'native', 'either', 'none'): + return s.lower() + else : + raise ValueError("hinting should be 'auto', 'native', 'either' or 'none'") validate_pgf_texsystem = ValidateInStrings('pgf.texsystem', ['xelatex', 'lualatex', 'pdflatex']) @@ -421,7 +433,7 @@ def validate_hinting(s): def validate_bbox(s): - if type(s) is str: + if isinstance(s, basestring): s = s.lower() if s == 'tight': return s @@ -494,7 +506,7 @@ def __call__(self, s): # line props 'lines.linewidth': [1.0, validate_float], # line width in points 'lines.linestyle': ['-', str], # solid line - 'lines.color': ['b', validate_color], # blue + 'lines.color': ['blue', validate_color], # b=blue 'lines.marker': ['None', str], # black 'lines.markeredgewidth': [0.5, validate_float], 'lines.markersize': [6, validate_float], # markersize, in points @@ -506,17 +518,17 @@ def __call__(self, s): ## patch props 'patch.linewidth': [1.0, validate_float], # line width in points - 'patch.edgecolor': ['k', validate_color], # black - 'patch.facecolor': ['b', validate_color], # blue + 'patch.edgecolor': ['black', validate_color], # k=black + 'patch.facecolor': ['blue', validate_color], # b=blue 'patch.antialiased': [True, validate_bool], # antialised (no jaggies) ## font props - 'font.family': ['sans-serif', validate_stringlist], # used by text object - 'font.style': ['normal', str], - 'font.variant': ['normal', str], - 'font.stretch': ['normal', str], - 'font.weight': ['normal', str], + 'font.family': ['sans-serif', validate_string], # 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': [12, validate_float], # Base font size in points 'font.serif': [['Bitstream Vera Serif', 'DejaVu Serif', 'New Century Schoolbook', 'Century Schoolbook L', @@ -530,7 +542,7 @@ def __call__(self, s): validate_stringlist], 'font.cursive': [['Apple Chancery', 'Textile', 'Zapf Chancery', 'Sand', 'cursive'], validate_stringlist], - 'font.fantasy': [['Comic Sans MS', 'Chicago', 'Charcoal', 'Impact' + 'font.fantasy': [['Comic Sans MS', 'Chicago', 'Charcoal', 'Impact', 'Western', 'fantasy'], validate_stringlist], 'font.monospace': [['Bitstream Vera Sans Mono', 'DejaVu Sans Mono', 'Andale Mono', 'Nimbus Mono L', 'Courier New', @@ -538,7 +550,7 @@ def __call__(self, s): validate_stringlist], # text props - 'text.color': ['k', validate_color], # black + 'text.color': ['black', validate_color], # k=black 'text.usetex': [False, validate_bool], 'text.latex.unicode': [False, validate_bool], 'text.latex.preamble': [[''], validate_stringlist], @@ -553,7 +565,7 @@ def __call__(self, s): 'mathtext.tt': ['monospace', validate_font_properties], 'mathtext.it': ['serif:italic', validate_font_properties], 'mathtext.bf': ['serif:bold', validate_font_properties], - 'mathtext.sf': ['sans\-serif', validate_font_properties], + 'mathtext.sf': ['sans', validate_font_properties], 'mathtext.fontset': ['cm', validate_fontset], 'mathtext.default': ['it', validate_mathtext_default], 'mathtext.fallback_to_cm': [True, validate_bool], @@ -571,8 +583,8 @@ def __call__(self, s): # axes props 'axes.axisbelow': [False, validate_bool], 'axes.hold': [True, validate_bool], - 'axes.facecolor': ['w', validate_color], # background color; white - 'axes.edgecolor': ['k', validate_color], # edge color; black + 'axes.facecolor': ['white', validate_color], # background color; w=white + 'axes.edgecolor': ['black', validate_color], # edge color; k=black 'axes.linewidth': [1.0, validate_float], # edge linewidth 'axes.titlesize': ['large', validate_fontsize], # fontsize of the # axes title @@ -580,7 +592,7 @@ def __call__(self, s): 'axes.labelsize': ['medium', validate_fontsize], # fontsize of the # x any y labels 'axes.labelweight': ['normal', str], # fontsize of the x any y labels - 'axes.labelcolor': ['k', validate_color], # color of axis label + 'axes.labelcolor': ['black', validate_color], # color of axis label 'axes.formatter.limits': [[-7, 7], validate_nseq_int(2)], # use scientific notation if log10 # of the axis range is smaller than the @@ -665,7 +677,7 @@ def __call__(self, s): 'ytick.labelsize': ['medium', validate_fontsize], 'ytick.direction': ['in', str], # direction of yticks - 'grid.color': ['k', validate_color], # grid color + 'grid.color': ['black', validate_color], # grid color 'grid.linestyle': [':', str], # dotted 'grid.linewidth': [0.5, validate_float], # in points 'grid.alpha': [1.0, validate_float], @@ -676,7 +688,7 @@ def __call__(self, s): 'figure.figsize': [[8.0, 6.0], validate_nseq_float(2)], 'figure.dpi': [80, validate_float], # DPI 'figure.facecolor': ['0.75', validate_color], # facecolor; scalar gray - 'figure.edgecolor': ['w', validate_color], # edgecolor; white + 'figure.edgecolor': ['white', validate_color], # edgecolor; w=white 'figure.frameon': [True, validate_bool], 'figure.autolayout': [False, validate_bool], 'figure.max_open_warning': [20, validate_int], @@ -696,8 +708,8 @@ def __call__(self, s): ## Saving figure's properties 'savefig.dpi': [100, validate_float], # DPI - 'savefig.facecolor': ['w', validate_color], # facecolor; white - 'savefig.edgecolor': ['w', validate_color], # edgecolor; white + 'savefig.facecolor': ['white', validate_color], # facecolor; w=white + 'savefig.edgecolor': ['white', validate_color], # edgecolor; w=white 'savefig.frameon': [True, validate_bool], 'savefig.orientation': ['portrait', validate_orientation], # edgecolor; #white @@ -752,53 +764,52 @@ def __call__(self, s): 'plugins.directory': ['.matplotlib_plugins', str], 'path.simplify': [True, validate_bool], - 'path.simplify_threshold': [1.0 / 9.0, ValidateInterval(0.0, 1.0)], + 'path.simplify_threshold': [0.1, 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; # key-mappings (multi-character mappings should be a list/tuple) - 'keymap.fullscreen': [('f', 'ctrl+f'), validate_stringlist], + 'keymap.fullscreen': [['f', 'ctrl+f'], validate_stringlist], 'keymap.home': [['h', 'r', 'home'], validate_stringlist], 'keymap.back': [['left', 'c', 'backspace'], validate_stringlist], 'keymap.forward': [['right', 'v'], 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'), validate_stringlist], - 'keymap.grid': ['g', validate_stringlist], - 'keymap.yscale': ['l', 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'], validate_stringlist], + 'keymap.grid': [['g'], validate_stringlist], + 'keymap.yscale': [['l'], validate_stringlist], 'keymap.xscale': [['k', 'L'], validate_stringlist], - 'keymap.all_axes': ['a', validate_stringlist], + 'keymap.all_axes': [['a'], validate_stringlist], # sample data - 'examples.directory': ['', str], + 'examples.directory': ['', validate_string], # Animation settings 'animation.writer': ['ffmpeg', validate_movie_writer], - 'animation.codec': ['mpeg4', str], + 'animation.codec': ['mpeg4', validate_string], 'animation.bitrate': [-1, validate_int], # Controls image format when frames are written to disk 'animation.frame_format': ['png', validate_movie_frame_fmt], # Path to FFMPEG binary. If just binary name, subprocess uses $PATH. - 'animation.ffmpeg_path': ['ffmpeg', str], + 'animation.ffmpeg_path': ['ffmpeg', 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', str], + 'animation.avconv_path': ['avconv', validate_string], # Additional arguments for avconv movie writer (using pipes) - 'animation.avconv_args': ['', validate_stringlist], + 'animation.avconv_args': [[''], validate_stringlist], # Path to MENCODER binary. If just binary name, subprocess uses $PATH. - 'animation.mencoder_path': ['mencoder', str], + 'animation.mencoder_path': ['mencoder', validate_string], # Additional arguments for mencoder movie writer (using pipes) - 'animation.mencoder_args': ['', validate_stringlist], + 'animation.mencoder_args': [[''], validate_stringlist], # Path to convert binary. If just binary name, subprocess uses $PATH - 'animation.convert_path': ['convert', str], + 'animation.convert_path': ['convert', validate_string], # Additional arguments for mencoder movie writer (using pipes) - - 'animation.convert_args': ['', validate_stringlist]} + 'animation.convert_args': [[''], validate_stringlist]} if __name__ == '__main__': diff --git a/lib/matplotlib/tests/test_rcsetup.py b/lib/matplotlib/tests/test_rcsetup.py new file mode 100644 index 000000000000..85267ab92b48 --- /dev/null +++ b/lib/matplotlib/tests/test_rcsetup.py @@ -0,0 +1,41 @@ +import os + +import matplotlib as mpl +from matplotlib.tests import assert_str_equal + +templaterc = os.path.join(os.path.dirname(__file__), 'test_rcsetup.rc') +deprecated = ['svg.embed_char_paths', 'savefig.extension'] + +def test_defaults(): + # the default values should be successfully set by this class + with mpl.rc_context(rc=mpl.rcsetup.defaultParams): + for k, v in mpl.rcsetup.defaultParams.iteritems(): + if k not in deprecated: + assert mpl.rcParams[k][0] == v[0] + + +def test_template(): + # the current matplotlibrc.template should validate successfully + with mpl.rc_context(fname=templaterc): + for k, v in mpl.rcsetup.defaultParams.iteritems(): + if k not in deprecated: + if isinstance(v[0], basestring): + assert mpl.rcParams[k] in [v[0], v[0].lower()] + else : + assert mpl.rcParams[k] == v[0] + +def test_unicode(): + # unicode formatted valid strings should validate successfully + for k, v in mpl.rcsetup.defaultParams.iteritems(): + if k not in deprecated: + if isinstance(v[0], basestring): + u = v[1](unicode(v[0])) + if u not in [v[0], v[0].lower()] : + print "Expected : ", v[0] + print "Actual : ", u + assert u in [v[0], v[0].lower()] + + +if __name__ == '__main__': + import nose + nose.runmodule(argv=['-s', '--with-doctest'], exit=False) diff --git a/lib/matplotlib/tests/test_rcsetup.rc b/lib/matplotlib/tests/test_rcsetup.rc new file mode 100644 index 000000000000..11450673dd9a --- /dev/null +++ b/lib/matplotlib/tests/test_rcsetup.rc @@ -0,0 +1,465 @@ +### 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. 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 HOME/.matplotlib/matplotlibrc (unix/linux +# like systems) and C:\Documents and Settings\yourname\.matplotlib +# (win32 systems). +# +# 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 +# +# 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 + +# the default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo +# CocoaAgg MacOSX Qt4Agg TkAgg WX WXAgg Agg Cairo GDK 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 + +# If you are using the Qt4Agg backend, you can choose here +# to use the PyQt4 bindings or the newer PySide bindings to +# the underlying Qt4 toolkit. +backend.qt4 : PyQt4 # PyQt4 | PySide + +# Note that this can be overridden by the environment variable +# QT_API used by Enthought Tool Suite (ETS); valid values are +# "pyqt" and "pyside". The "pyqt" setting has the side effect of +# forcing the use of Version 2 API for QString and QVariant. + +# The port to use for the web server in the WebAgg backend. +# webagg.port : 8888 + +# 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 ("classic" is deprecated) +timezone : UTC # a pytz timezone string, eg 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 http://matplotlib.org/api/artist_api.html#module-matplotlib.lines for more +# information on line properties. +lines.linewidth : 1.0 # line width in points +lines.linestyle : - # solid line +lines.color : blue # has no affect on plot(); see axes.color_cycle +lines.marker : None # the default marker +lines.markeredgewidth : 0.5 # the line width around the marker symbol +lines.markersize : 6 # markersize, 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 antialised (no jaggies) + +### PATCHES +# Patches are graphical objects that fill 2D space, like polygons or +# circles. See +# http://matplotlib.org/api/artist_api.html#module-matplotlib.patches +# information on patch properties +patch.linewidth : 1.0 # edge width in points +patch.facecolor : blue +patch.edgecolor : black +patch.antialiased : True # render patches in antialised (no jaggies) + +### FONT +# +# font properties used by text.Text. See +# http://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. +# 12pt is the standard value. +# +font.family : sans-serif +font.style : normal +font.variant : normal +font.weight : normal +font.stretch : normal +# 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.size : 12.0 +font.serif : Bitstream Vera Serif, DejaVu Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif +font.sans-serif : Bitstream Vera Sans, DejaVu Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif +font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, cursive +font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, fantasy +font.monospace : Bitstream Vera Sans Mono, DejaVu Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace + +### TEXT +# text properties used by text.Text. See +# http://matplotlib.org/api/artist_api.html#module-matplotlib.text for more +# information on text properties + +text.color : black + +### LaTeX customizations. See http://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex +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.unicode : False # use "ucs" and "inputenc" LaTeX packages for handling + # unicode strings. +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. + # 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 + +text.dvipnghack : None # some versions of dvipng don't handle alpha + # channel properly. Use True to correct + # and flush ~/.matplotlib/tex.cache + # before testing and False to force + # correction off. None will try and + # guess based on your dvipng version + +text.hinting : True # 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. + # For backward compatibility, this value may also be + # True === 'auto' or False === 'none'. +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 : serif +mathtext.tt : monospace +mathtext.it : serif:italic +mathtext.bf : serif:bold +mathtext.sf : sans +mathtext.fontset : cm # Should be '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 +# default face and edge color, default tick sizes, +# default fontsizes for ticklabels, and so on. See +# http://matplotlib.org/api/axes_api.html#module-matplotlib.axes +axes.hold : True # whether to clear the axes by default on +axes.facecolor : white # axes background color +axes.edgecolor : black # axes edge color +axes.linewidth : 1.0 # edge linewidth +axes.grid : False # display grid or not +axes.titlesize : large # fontsize of the axes title +axes.labelsize : medium # fontsize of the x any y labels +axes.labelweight : normal # weight of the x and y labels +axes.labelcolor : black +axes.axisbelow : False # whether axis gridlines and ticks are below + # the axes elements (lines, text, etc) +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.unicode_minus : True # use unicode for the minus symbol + # rather than hyphen. See + # http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes +axes.color_cycle : b, g, r, c, m, y, k # color cycle for plot lines + # as list of string colorspecs: + # single letter, long name, or + # web-style hex +axes.xmargin : 0 # x margin. See `axes.Axes.margins` +axes.ymargin : 0 # y margin See `axes.Axes.margins` + +polaraxes.grid : True # display grid on polar axes +axes3d.grid : True # display grid on 3d axes + +### TICKS +# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick +xtick.major.size : 4 # major tick size in points +xtick.minor.size : 2 # minor tick size in points +xtick.major.width : 0.5 # major tick width in points +xtick.minor.width : 0.5 # minor tick width in points +xtick.major.pad : 4 # distance to major tick label in points +xtick.minor.pad : 4 # distance to the minor tick label in points +xtick.color : k # color of the tick labels +xtick.labelsize : medium # fontsize of the tick labels +xtick.direction : in # direction: in, out, or inout + +ytick.major.size : 4 # major tick size in points +ytick.minor.size : 2 # minor tick size in points +ytick.major.width : 0.5 # major tick width in points +ytick.minor.width : 0.5 # minor tick width in points +ytick.major.pad : 4 # distance to major tick label in points +ytick.minor.pad : 4 # distance to the minor tick label in points +ytick.color : k # color of the tick labels +ytick.labelsize : medium # fontsize of the tick labels +ytick.direction : in # direction: in, out, or inout + + +### GRIDS +grid.color : black # grid color +grid.linestyle : : # dotted +grid.linewidth : 0.5 # in points +grid.alpha : 1.0 # transparency, between 0.0 and 1.0 + +### Legend +legend.fancybox : False # if True, use a rounded box for the + # legend, else a rectangle +legend.isaxes : True +legend.numpoints : 2 # the number of points in the legend line +legend.fontsize : large +legend.borderpad : 0.4 # border whitespace in fontsize units +legend.markerscale : 1.0 # the relative size of legend markers vs. original +# the following dimensions are in axes coords +legend.labelspacing : 0.5 # the vertical space between the legend entries in fraction of fontsize +legend.handlelength : 2. # the length of the legend lines in fraction of fontsize +legend.handleheight : 0.7 # the height of the legend handle in fraction of fontsize +legend.handletextpad : 0.8 # the space between the legend line and legend text in fraction of fontsize +legend.borderaxespad : 0.5 # the border between the axes and legend edge in fraction of fontsize +legend.columnspacing : 2. # the border between the axes and legend edge in fraction of fontsize +legend.shadow : False +legend.frameon : True # whether or not to draw a frame around legend +legend.scatterpoints : 3 # number of scatter points + +### FIGURE +# See http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure +figure.figsize : 8, 6 # figure size in inches +figure.dpi : 80 # figure dots per inch +figure.facecolor : 0.75 # figure facecolor; 0.75 is scalar gray +figure.edgecolor : white # figure edgecolor +figure.autolayout : False # When True, automatically adjust subplot + # parameters to make the plot fit the figure +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 or 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.1 # the bottom of the subplots of the figure +figure.subplot.top : 0.9 # the top of the subplots of the figure +figure.subplot.wspace : 0.2 # the amount of width reserved for blank space between subplots +figure.subplot.hspace : 0.2 # the amount of height reserved for white space between subplots + +### IMAGES +image.aspect : equal # equal | auto | a number +image.interpolation : bilinear # see help(imshow) for options +image.cmap : jet # gray | jet etc... +image.lut : 256 # the size of the colormap lookup table +image.origin : upper # lower | upper +image.resample : False + +### CONTOUR PLOTS +contour.negative_linestyle : dashed # dashed | solid + +### 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. +### SAVING FIGURES +path.simplify : True # When True, simplify paths by removing "invisible" + # points to reduce file size and increase rendering + # speed +path.simplify_threshold : 0.1 # 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. + +# 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 : 100 # figure dots per inch +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' or 'standard'. +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 + +# 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 # can be: None, ghostscript or xpdf + # 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) + +# svg backend params +svg.image_inline : True # write raster image data directly into the svg file +svg.image_noscale : False # suppress scaling of raster data embedded in SVG +svg.fonttype : path # How to handle SVG fonts: +# 'none': Assume fonts are installed on the machine where the SVG will be viewed. +# 'path': Embed characters as paths -- supported by most SVG renderers +# 'svgfont': Embed characters as SVG fonts -- supported only by Chrome, +# Opera and Safari + +# docstring params +docstring.hardcopy : False # set this when you want to generate hardcopy docstring + +# 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 your 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. +verbose.level : silent # one of silent, helpful, debug, debug-annoying +verbose.fileo : sys.stdout # a log filename, sys.stdout or sys.stderr + +# Event keys to interact with figures/plots via keyboard. +# 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 # forward / backward keys to enable +keymap.forward : right, v # left handed quick navigation +keymap.pan : p # pan mnemonic +keymap.zoom : o # zoom mnemonic +keymap.save : s, ctrl+s # saving current figure +keymap.quit : ctrl+w, cmd+w # close the current figure +keymap.grid : g # switching on/off a grid 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 + +# Control location of examples data files +examples.directory : '' # directory to look in for custom installation + +###ANIMATION settings +animation.writer : ffmpeg # MovieWriter 'backend' to use +animation.codec : mpeg4 # 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.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.mencoder_path: 'mencoder' # Path to mencoder binary. Without full path + # $PATH is searched +animation.mencoder_args: '' # Additional arguments to pass to mencoder diff --git a/matplotlibrc.template b/matplotlibrc.template index 00f9e2a56138..c2d767813731 100644 --- a/matplotlibrc.template +++ b/matplotlibrc.template @@ -74,9 +74,9 @@ backend : %(backend)s #lines.marker : None # the default marker #lines.markeredgewidth : 0.5 # the line width around the marker symbol #lines.markersize : 6 # markersize, in points -#lines.dash_joinstyle : miter # miter|round|bevel +#lines.dash_joinstyle : round # miter|round|bevel #lines.dash_capstyle : butt # butt|round|projecting -#lines.solid_joinstyle : miter # miter|round|bevel +#lines.solid_joinstyle : round # miter|round|bevel #lines.solid_capstyle : projecting # butt|round|projecting #lines.antialiased : True # render lines in antialised (no jaggies) @@ -129,7 +129,7 @@ backend : %(backend)s #font.family : sans-serif #font.style : normal #font.variant : normal -#font.weight : medium +#font.weight : normal #font.stretch : normal # note that font.size controls default text sizes. To configure # special text sizes tick labels, axes, labels, title, etc, see the rc @@ -137,11 +137,11 @@ backend : %(backend)s # relative to font.size, using the following values: xx-small, x-small, # small, medium, large, x-large, xx-large, larger, or smaller #font.size : 12.0 -#font.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 -#font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif +#font.serif : Bitstream Vera Serif, DejaVu Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif +#font.sans-serif : Bitstream Vera Sans, DejaVu Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif #font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, cursive #font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, fantasy -#font.monospace : Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace +#font.monospace : Bitstream Vera Sans Mono, DejaVu Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace ### TEXT # text properties used by text.Text. See @@ -181,7 +181,7 @@ backend : %(backend)s # correction off. None will try and # guess based on your dvipng version -#text.hinting : 'auto' # May be one of the following: +#text.hinting : True # May be one of the following: # 'none': Perform no hinting # 'auto': Use freetype's autohinter # 'native': Use the hinting information in the @@ -292,7 +292,7 @@ backend : %(backend)s #legend.isaxes : True #legend.numpoints : 2 # the number of points in the legend line #legend.fontsize : large -#legend.borderpad : 0.5 # border whitespace in fontsize units +#legend.borderpad : 0.4 # border whitespace in fontsize units #legend.markerscale : 1.0 # the relative size of legend markers vs. original # the following dimensions are in axes coords #legend.labelspacing : 0.5 # the vertical space between the legend entries in fraction of fontsize @@ -399,14 +399,14 @@ backend : %(backend)s # svg backend params #svg.image_inline : True # write raster image data directly into the svg file #svg.image_noscale : False # suppress scaling of raster data embedded in SVG -#svg.fonttype : 'path' # How to handle SVG fonts: +#svg.fonttype : path # How to handle SVG fonts: # 'none': Assume fonts are installed on the machine where the SVG will be viewed. # 'path': Embed characters as paths -- supported by most SVG renderers # 'svgfont': Embed characters as SVG fonts -- supported only by Chrome, # Opera and Safari # docstring params -#docstring.hardcopy = False # set this when you want to generate hardcopy docstring +#docstring.hardcopy : False # set this when you want to generate hardcopy docstring # Set the verbose flags. This controls how much information # matplotlib gives you at runtime and where it goes. The verbosity @@ -432,35 +432,34 @@ backend : %(backend)s # 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 # toggling +#keymap.fullscreen : f, ctrl+f # toggling #keymap.home : h, r, home # home or reset mnemonic #keymap.back : left, c, backspace # forward / backward keys to enable #keymap.forward : right, v # left handed quick navigation #keymap.pan : p # pan mnemonic #keymap.zoom : o # zoom mnemonic -#keymap.save : s # saving current figure +#keymap.save : s, ctrl+s # saving current figure #keymap.quit : ctrl+w, cmd+w # close the current figure #keymap.grid : g # switching on/off a grid in current axes #keymap.yscale : l # toggle scaling of y-axes ('log'/'linear') -#keymap.xscale : L, k # toggle scaling of x-axes ('log'/'linear') +#keymap.xscale : k, L # toggle scaling of x-axes ('log'/'linear') #keymap.all_axes : a # enable all axes # Control location of examples data files #examples.directory : '' # directory to look in for custom installation ###ANIMATION settings -#animation.writer : ffmpeg # MovieWriter 'backend' to use -#animation.codec : mp4 # 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.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.mencoder_path: 'mencoder' - # Path to mencoder binary. Without full path - # $PATH is searched -#animation.mencoder_args: '' # Additional arguments to pass to mencoder +#animation.writer : ffmpeg # MovieWriter 'backend' to use +#animation.codec : mpeg4 # 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.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.mencoder_path: 'mencoder' # Path to mencoder binary. Without full path + # $PATH is searched +#animation.mencoder_args: '' # Additional arguments to pass to mencoder diff --git a/setupext.py b/setupext.py index 52c1e716f0b8..78b00563e8dc 100644 --- a/setupext.py +++ b/setupext.py @@ -612,7 +612,8 @@ def get_package_data(self): baseline_images + [ 'tests/mpltest.ttf', - 'tests/test_rcparams.rc' + 'tests/test_rcparams.rc', + 'tests/test_rcsetup.rc' ]} def get_install_requires(self):