# To update, add a new entry to the versioninfo dictionary using the # version string as a key. The value of the dict entry should be a # tuple of (name, description) tuples versioninfo = {} versioninfo['0.98.0'] = ( ('better transformations', """In what has been described as open-heart surgery on matplotlib, Michael Droettboom, supported by STScI, has rewritten the transformation infrastructure from the ground up, which not only makes the code more intuitive, it supports custom user projections and scales. See adding a new projection and the transforms module documentation"""), ('proper paths', """For the first time, matplotlib supports spline paths across backends, so you can pretty much draw anything. See the path_patch_demo screenshot . Thanks again to Michael Droettboom and STScI"""), ('histogram enhancements', """hist can handle 2D arrays and create side-by-side or stacked histograms, as well as cumulative filled and unfilled histograms; see histogram_demo_extended.py"""), ('ginput function', """ginput is a blocking function for interactive use to get input from the user. A long requested feature submitted by Gael Varoquaux. See ginput_demo.py"""), ('image optimizations', 'enhancements to speed up color mapping and panning and zooming on dense images'), ('better savefig', """savefig now supports save to file handles (great for web app servers) or unicode filenames on all backends"""), ('record array functions', """some more helper functions to facilitate work with record arrays: rec_groupby, rec2txt, rec_summarize"""), ('accurate elliptical arcs', """In support of the Phoenix mission to Mars, which used matplotlib in ground tracking of the spacecraft, Michael Droettboom built on work by Charlie Moad to provide an extremely accurate 8-spline approximation to elliptical arcs in the viewport. This provides a scale free, accurate graph of the arc regardless of zoom level. See ellipse_demo screenshot."""), ('imread enhanced', """imread now will use PIL when available to load images and return numpy arrays"""), ('postscript enhancements', 'the postscript backend has clipping to paths (useful for polar plots)'), ('PDF enhancements', 'The PDF backend handles composite glyphs properly, usetex fixes'), ('SVG enhancements', 'clip to path (useful for polar plots), inkscape cut-and-paste fixes.'), ('QT enhancements', 'Fixed a duplicate draw bug that slowed performance. Native qt toolbars and status bars used for the toolbar controls.'), ) versioninfo['0.91.2'] = ( ('enhanced mathtext', """Complete revamp of matplotlib's internal math layout and rendering engine. Michael Droettboom has improved the TeX parser to significantly expand it's coverage, and implemented Knuth's box layout algorithms. Additionally, the much anticipated STIX fonts for math expressions have come online and ship with matplotlib. See a sample of the new mathtext at mathtext_examples. """), ('better configuration', """Darren Dale has provided support for a site.cfg configuration file to enable users and package maintainers to have better control over the matplotlib build process. He has also provided a (currently optional) enthought.traits enabled property configuration to replace matplotlib's rc configuration using a maplotlib.conf file """ ), ('writing to file-like objects', """You can now pass file like objects (eg StringIO) to all backends for hardcopy. This has been a much requested feature for usage in web application servers. """), ('record array support', """New functions for loading, displaying and saving numpy record arrays in matplotlib.mlab. See for example, loadrec.py """), ('pyplot', """Added a module matplotlib.pyplot which has all of pylab's plotting functions (eg figure, plot, show, close) but does not import the numpy namespace. This is useful for those who want to use the pylab functionality w/o the namespace clutter. """), ('maskedarray', """Added optional support for the scipy sandbox masked array packaged. Configurable with an rc setting. """), ('plotfile', """Added new pylab/pyplot command plotfile for gnuplot style file plotting """), ('tons of bugfixes and minor enhancements', """See the CHANGELOG and API_CHANGES for details. """), ) versioninfo['0.90.1'] = ( ('unicode support for latex', """Added LaTeX unicode support. Enable with the 'text.latex.unicode' rcParam. This requires the ucs and inputenc LaTeX packages."""), ('polar enhancements', """Fixed some problems with polar -- added general polygon clipping to clip the lines a nd grids to the polar axes. Added support for set_rmax to easily change the maximum radial grid. Added support for polar legend"""), ('heler function for date plots', """Added Figure.autofmt_xdate to handle adjusting the bottom and rotating the tick labels for date plots when the ticks often overlap"""), ('grayscale colors now strings', """Removed deprecated support for a float value as a gray-scale; now it must be a string, like '0.5'. Added alpha kwarg to ColorConverter.to_rgba_list."""), ('enhanced xcorr and acorr', """Some more niceties for xcorr -- a maxlags option, normed now works for xcorr as well as axorr, usevlines is supported, and a zero correlation hline is added. See xcorr_demo.py"""), ('performance boost to hlines and vlines', """Axes.vlines and Axes.hlines now create and returns a LineCollection, not a list of lines. This is much faster. The kwarg signature has changed, so consult the docs. Modified Axes.errorbar which uses vlines and hlines. See API_CHANGES; the return signature for these three functions is now different"""), ('mpl using setuptools', 'Require setuptools for Python 2.3'), ('wx blit enhancements', """The backend has been updated to use new wxPython functionality to provide fast blit() animation without the C++ accelerator. This requires wxPython 2.8 or later. Previous versions of wxPython can use the C++ acclerator or the old pure Python routines."""), ('better pdf font handling', 'Lots of pdf font enhancements -- see the CHANGELOG.'), ('new picker API', 'Better support for interactive object picking. ; see pick_event_demo.py'), ('subplot labeling convience functions', """Added "Subplot.label_outer" method. It will set the visibility of the ticklabels so that yticklabels are only visible in the first column and xticklabels are only visible in the last row"""), ('documnetation updates', 'Added additional kwarg documentation'), ('specgram updates', "Added Tim Leslie's spectral patch"), ('tick formatting updates', """Added rc param 'axes.formatter.limits' to control the default threshold for switching to scientific notation. Added convenience method Axes.ticklabel_format() for turning scientific notation on or off on either or both axes. Added ability to turn control scientific notation in ScalarFormatter"""), ('sparse matrix visualization enhancements', """Replaced spy and spy2 with the new spy that combines marker and image capabilities"""), ('betterm Matlab compatibility in plot argument handling', """Added support for plotting 2-D arrays with plot: columns are plotted as in Matlab"""), ('pcolor now supports vectors', """Made pcolor support vector X and/or Y instead of requiring 2-D arrays."""), ('logarithmic color scaling', """Added LogNorm to colors.py as illustrated by pcolor_log.py, based on suggestion by Jim McDonald. Colorbar modified to handle LogNorm. Norms have additional "inverse" method."""), ('clipped line demo', """Added clippedline.py, which shows how to clip line data based on view limits -- it also changes the marker style when zoomed in."""), ('deprecated some old plot functions', """Removed obsolete scatter_classic, leaving a stub to raise NotImplementedError; same for pcolor_classic"""), ('new broken bar plot function', """Added broken_barh function for makring a sequence of horizontal bars broken by gaps -- see broken_barh.py"""), ('annotation enhancements', """Removed lineprops and markerprops from the Annotation code and replaced them with an arrow configurable with kwarg arrowprops. See annotation_demo.py"""), ) versioninfo['0.87.5'] = ( ("aspect handling", """\ Excellent support for axes aspect handling, with aspect='equal' or aspect=1.5 or aspect='norm' passed to an Axes or Subplot """), ("lasso tool", """\ Use a lasso tool for picking points -- see lasso demo """), ("true ellipses", """\ Earlier versions of matplotlib used a polygon approximation to ellipses. With this release we have arcs supporting scale free ellipses and circles. See ellipse demo.py """), ("pdf backend", """\ A alpha release of the PDF backend """), ("quiver2", """\ Better support for quiver / direction field plots """), ("enhanced colorbar support", """\ Supports discrete colorbars and more """), ("John Porter's 3D code incorporated", """\ A prototype implementation of simple 3D plots -- see simple3d_oo.py """), ) versioninfo['0.83'] = ( ("axis('scale')", """\ Added Mark Athen's 'scale' patch, so that on a scaled axis a circle looks like circle. See help(axis). """), ('New cursor and span selector widgets', """\ Added new Cursor and HorizontalSpanSelector to matplotlib.widgets. See cursor.py and span_selector.py. Set useblit = True on gtkagg for significantly enhanced performance. """), ('draw events', """\ You can use use matplotlib event handling to register a callback after figure draw using 'draw_event' which calls the callback with a DrawEvent instance
def callback(event): #event.renderer is the backend Renderer instance pass connect('draw_event')"""), ('Full screen mode in GTK*', """\ Use 'f' to toggle full screen mode in the GTK backends. """), ('GTK and SVG fixes', """\ Steve Chaplin has made numerous updates to the GTK and SVG backends. See the CHANGELOG for details. """), ('Reorganized config files', """\ Made HOME/.matplotlib the new config dir where the matplotlibrc file, the ttf.cache, and the tex.cache live. The new default filenames in .matplotlib have no leading dot and are not hidden. Eg, the new names are matplotlibrc, tex.cache, and ttffont.cache. This is how ipython does it so it must be right. If old files are found, a warning is issued and they are moved to the new location. Also fixed texmanager to put all files, including temp files in ~/.matplotlib/tex.cache, which allows you to usetex in non-writable dirs. """), ('Using matplotlib.agg to draw paths', """\ Updated agg_test.py to demonstrate curved paths and fills. """ ), ('CocoaAgg', """\ New CocoaAgg backend for native GUI on OSX, 10.3 and 10.4 compliant. """), ('Qt enhancements', """\ Applied Ted Drain's QtAgg patch: 1) Changed the toolbar to be a horizontal bar of push buttons instead of a QToolbar and updated the layout algorithms in the main window accordingly. This eliminates the ability to drag and drop the toolbar and detach it from the window. 2) Updated the resize algorithm in the main window to show the correct size for the plot widget as requested. This works almost correctly right now. It looks to me like the final size of the widget is off by the border of the main window but I haven't figured out a way to get that information yet. We could just add a small margin to the new size but that seems a little hacky. 3) Changed the x/y location label to be in the toolbar like the Tk backend instead of as a status line at the bottom of the widget. 4) Changed the toolbar pixmaps to use the ppm files instead of the png files. I noticed that the Tk backend buttons looked much nicer and it uses the ppm files so I switched them. """), ('mathtext optimizations', """\ Upgraded pyparsing and applied Paul McGuire's suggestions for speeding things up. This more than doubles the speed of mathtext in my simple tests. """), ('Bugs fixed / small features', """\ Applied SF patches 1242648, 1244732. Fixes SF bugs 1238412, 1231611, 1209354, subplot (2,1,1) bug, """), ) versioninfo['0.82'] = ( ('Subplot configuration', """\ All of the parameters of the subplots are now exposed at the rc,pylab and API layout. These are left, right, bottom, top, wspace and hspace which control how the subplots are placed on the screen. See SubplotParams, Figure.subplots_adjust and the pylab method subplots_adjust and subplots_adjust.py . Also added a GUI neutral widget for adjusting subplots, see subplot_toolbar.py. There is a new toolbar button on GTK*, WX* and TkAgg to launch the subplot configuration tool (which uses the new matplotlib cross GUI classes discussed below).
This also makes it easier to make ganged plots -- see ganged_plots.py.
Note this required a small change to how the toolbar on some GUIs are imported; if you are using the mpl API in WXAgg and GTKAgg, see API_CHANGES. """), ('GUI neutral widgets', """\ Matplotlib now has cross-GUI widgets (buttons, check buttons, radio buttons and sliders). You have to manually create properly sized Axes for them to live in, but otherwise they are pretty easy to use. See examples/widgets and slider_demo. This makes it easier to create interactive figures that run across backends. """), ('Cap and join style', """\ Exposes line cap and join style via new rc params and Line2D properties
lines.dash_joinstyle : miter # miter|round|bevel lines.dash_capstyle : butt # butt|round|projecting lines.solid_joinstyle : miter # miter|round|bevel lines.solid_capstyle : projecting # butt|round|projecting"""), ('Axes kwargs', """\ All Axes properties are now exposed via kwargs, so you can do, for example
subplot(111, xlabel='time', ylabel='volts', autoscale_on=False, xlim=(-1,1), ylim =(0,10) )"""), ('Small bugfixes and features', """\ Fixed a upper/right tick bug (thanks Baptiste), fixed invalid rc docstring vis-a-vis aliases, fixed bug #1217637 in ticker.py and a cleanup bug in usetex (thanks Darren), added Sean Richards hist bin fix (see API_CHANGES) """), ) versioninfo['0.81'] = ( ('TeX support', """\ Now you can (optionally) use TeX to handle *all* of the text elements in your figure with the rc param text.usetex (*Agg and PS only). PS support requires tex, dvips and Ghostscript 8.51 (older versions do not work properly -- test your version with gs --version). Agg support requires tex and dvipng. A directory ~/.tex.cache is created where support files are cached for later reuse. We opted to ues TeX rather than LaTeX because it is faster and can do all the things we thought useful for figure text snippets. See tex demo screenshot and texmanager. Special thanks to Darren Dale for lots of hair-pulling work customizing, enhancing and debugging the ps backend for LaTeX support. """), ('Masked arrays', """\ Support for masked arrays in line plots, pcolor and contours. There are some problems with filled contours and masked arrays. Thanks Eric Firing and Jeffrey Whitaker. Note that the levels argument to the contour functions has changes slightly. See API_CHANGES. """), ('Byte images', """\ Much faster image loading for MxNx4 or MxNx3 UInt8 images, which bypasses the memory and CPU intensive integer/floating point conversions. Thanks Nicolas Girard. """), ('New image interpolation options', """\ New values for the interp kwarg are:'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos', 'blackman'. See help(imshow) for details, particularly the interpolation, filternorm and filterrad kwargs. """), ('Text and dashes', """\ Daishi Harada contributed a patch for connecting text to points with lines. See dashpointlabel.py and dashtick.py """), ('Fast markers on win32', """\ The marker cache optimization is finally available for win32, after an agg bug was found and fixed (thanks Maxim!). Line marker plots should be considerably faster now on win32. The original optimization announcement is here. """), ('set deprecated', """\ set clashes with the python2.4 builtin set. Use setp and getp instead (get still works but I added getp for consistency). A simple conversion script to recursive replace uses of set and get with setp and getp is provided in set_begone.py. Use with caution. """), ('Qt in ipython/pylab', """\ You can now use qt in ipython pylab mode. Thanks Fernando Perez and the brainvisa Orsay team """), ('agg wrapper', """\ Started work on a proper agg wrapper to expose more general agg functionality in mpl. See agg_test.py. Lots of wrapping remains to be done. """), ('New scalar formatter', """\ Darren Dale did a lot of work to make scalar formatting smarter in pathalogical cases. See newscalarformatter_demo.py. """), ('Small features', """\ linewidth and faceted kwargs to scatter to control edgewidth and color, autolegending now inspects line segments in addition to vertices, upgraded to agg23, new example showing how to use line collections line_collection.py, fixed antialiased property setting in agg, added a postscript papersize rc option ps.papersize, added an example showing how to embed mpl in a qt app embedding_in_qt.py, arrow keys now exposed in mpl's GUI neutral event handling, added"among" kwarg to axes picker function to limit picks, added autoscale_on property to Axes to control whether or not autoscaling is done. """), ('Bug fixes', """\ Fixed a contour masked array bug, contour memory leak. """), ) versioninfo['0.73'] = ( ('new contour functionality', """\ Filled contours (polygons) with contourf and clabel . See contour_demo.py, contour_image.py and this screenshot. Thanks Nadia and Eric for lots of hard work. This code is not perfect, so please let us know if you find bugs or problems. """), ('native font support back in PS', """\ Added new rc param param ps.useafm so ps backend can use native fonts; this currently breaks mathtext but makes for smaller files"""), ('colorbar now a figure method', """\ Refactored colorbar code out of pylab into Figure API for API developers. < a href=matplotlib.pyplot.html#-colorbar>pylab.colorbar is now a thin wrapper to this function."""), ('minor enhancements and bug-fixes', """\ Experimental support for GTK w/o double buffering, added double buffering to gtkagg, exposed some core agg functionality in matplotlib.agg, upgraded wrapper generator to CXX 5.3.1, added a custom pixel transfer function for GTK which works for Numeric and numarray, added patch for problem with Japanse fonts in windows registry, fixed ticks for horizontal colorbars"""), ) versioninfo['0.72'] = ( ('line marker optimizations in agg', """\ Heavy optimizations in line marker drawing eg plot(x,y,'+') or any other line marker. Here are some numbers, where N is the number of symbols
0.71 0.72 speedup ----------------------------------- N = 1000 | 0.24s | 0.13s | 1.85x N = 5000 | 0.68s | 0.19s | 3.57x N = 10000 | 1.17s | 0.28s | 4.19x N = 50000 | 5.30s | 0.60s | 8.89x N = 100000 | 10.02s | 0.70s | 14.31x N = 500000 | 48.81s | 2.32s | 21.03x"""), ('log plot enhancements', """\ Lots of work making log plots just work. You can toggle log y axes with the l ("ell") keypress -- nonpositive data are simply ignored and non longer raise. log plots should be a lot faster and more robust"""), ('contour fixes', """\ Fixed a contour bug for unequal sized arrays and made the syntax matlab compatible -- see API_CHANGES and the contour help."""), ('QT backend',"""\ alpha version of QTAgg backend -- note the licensing issue of QT is murky since QT is dual licensed. If you are shipping a commercial product with matplotlib you may want to remove the qt backend to be on the safe side."""), ('matshow for displaying arrays', """ To create a figure and axes with the same aspect ratio as your imaxge, use matshow Example at matshow.py. Thanks Fernando!"""), ('New interactive gtk shhell examples', """\ New interactive.py which shows you how to use matplotlib in a custom gtk shell, if for some reason ipython is not suitable for you."""), ('shared axes', """\ Shared axes for two scale and ganged plots -- you can set sharex on and axis and multiple subpolots will pan and zoom together. See shared_axis_demo.py - Thanks Baptiste!"""), ('Key press actions over axes', """\ Default key presses over axes: 'g' toggles grid, 'l' toggles logy"""), ('little features', """\ Calls to subplot with overlap other subplots now delete the overlapped subplot, load and save work with file and handles gzipped files transaparently, small PS optimizations, gtk figure resizing more flexible"""), ('bug fixes', """\ contour datalim and unequal sized array bugs, mx2num, added missing mathtext symbols, fonts in mathtext super/subscripts, contour works with interactive changes in cmaps, clim"""), ) versioninfo['0.71'] = ( ('numerix refactor', """\ The organization of the numerix module was refactored to be mindful of namespaces. See API_CHANGES. pylab no longer overrides the built-ins min, max, and sum, and provides amin, amax and asum as the numerix/mlab versions of these. To see the complete list of symbols provided
>>> import matplotlib.pylab >>> matplotlib.pylab.__all__"""), ('contour zigzag bug fixed', """\ Thanks Nadia for the blood, sweat and tears, and Dominique for the report."""), ('contour colormaps', """\ Contour now uses the current colormap if colors is not provided, and works with colorbars. See contour_demo2.py"""), ('colorbar enhancements', """\ Horizontal colorbars supported with keyword arg orientation='horizontal' and colorbars can be placed in an arbitrary axes with keyword arg cax. See colorbar"""), ('accents in mathtext', """\ Added accents to mathtext: \hat, \breve, \grave, \bar, \acute, \tilde, \vec, \dot, \ddot. All of them have the same syntax, eg to make an overbar you do \bar{o} or to make an o umlaut you do \ddot{o}. The shortcuts are also provided, eg: \"o \'e \`e \~n \.x \^y See accent_demo.py. """), ('fixed super/subscript parsing in mathtext', """\ Widowed superscripts now work, eg r'$^12\rm{CO}$' """), ('little bugs and enhancements', """\ Plugged some memory leaks in wx and image module, fixed x,y args in contour, added latex symbol kappa, fixed a yticklabel problem under change in clim, fixed colorbar number of color bug, fixed set_clip_on bug, reverted pythoninspect in tkagg, fixed event handling bugs, fixed matlab-compatible load function, exposed vbox attr in FigureManagerGTK. """), ) versioninfo['0.70'] = ( ('Users guide', """\ Though still not complete, there's enough to be useful -- users_guide.pdf. """), ('pie charts', """\ See pie screenshot. """), ('object picking', """\ Support for object picking - see examples/picker_demo.py. As people test this out and we settle on an interface, this will probably become part of the core, as will other keypress functionality for navigation, grid toogle, zoom toggle etc. """), ('wx/wxagg coords notification', """\ The wx toolbar now reports the x,y coords of the mouse """), ('key events', """\ Key press and release event supported across backends -- see keypress_demo.py. """), ('shadow effect', """\ Shadow patch class provides a shadow effect for polygons, legends, pie charts - eg, legend screenshot. """), ('text rotation example', """\ New examples/pylab/text_rotation.py demonstrates how text rotations and alignment work in matplotlib. """), ('Bug fix roundup', """\
from pylab import blah # OK from matplotlib.pylab import blah # OK from matplotlib.matlab import blah # Deprecated"""), ('contour', """\ contouring with the contour function!! Thanks to Nadia Dencheva. See contour_demo.py. And there was much rejoicing! """), ('enhanced set and get introspection', """\ matlab compatible set and get introspection to determine settable properties and their values. See set_and_get.py. Sample usage
>>> lines = plot([1,2,3]) >>> set(lines) alpha: float antialiased or aa: [True | False] ...snip lots more... >>> get(lines) alpha = 1.0 antialiased or aa = True ...snip lots more..."""), ('colormaps out the wazoo', """\ Added many new matlab compatible colormaps - autumn bone cool copper flag gray hot hsv jet pink prism spring summer winter - Thanks Perry! """), ('zordering', """\ zorder to artists to control drawing order of lines, patches and text in axes. See zorder_demo.py. """), ('delaxes', """\ You can now delete a specified axes or the current axes with delaxes """), ('more cairo features', """\ mathtext in cairo backend. Also, printing now works to file object. Thanks Steve Chaplin. """), ('printing in wx', """\ Matthew Newville contributed a print button and preview for the wx backends. He also, who graciously volunteered to be the new wx backend maintainer. """), ('connect and disconnect', """\ matlab interface functions connect and disconnect replace mpl_connect and disconnect for event handling. """), ('hold kwarg for all plotting commands', """\ Pass hold=True|False to any plotting command to override the current hold setting. The original hold setting will be restored at the end of the plot function """), ('text bounding boxes', """\ All text instances now have a bbox property which is a dict of Rectangle properties. If set, the text instance will display in a rectanglular bounding box. Example usage
title('hi mom', bbox={'facecolor':'r', 'alpha':0.5})"""), ('legend properties exposed as keyword arguments', """ See legend. """), ('ishold', """\ ishold to inspect the hold state. """), ('Sparsity pattern visualtization', """\ New plotting functions spy, spy2 for matrix sparsity visualization. """), ('customizing polar plots', """\ pylab interface functions rgrids and thetagrids for customizing the grid locations and labels for polar plots - see polar_demo.py."""), ('interactive control functions', """\ Added ion, ioff and isinteractive to pylab interface for control of interactive mode. See updated discussion at interactive matplotlib."""), ('bug fixes', """\
>>> xticks( arange(3), ('Tom', 'Dick', 'Harry'), fontsize=14 )"""), ('PIL support', """\ imshow now supports PIL images - see image_demo3.py. Thanks Andrew Straw."""), ('barh', 'barh for horizontal bar charts; see barh_demo.py'), ('Verbose', """\ Added a verbose class to allow different levels of verbosity - see matplotlibrc for details. Eg, you can now do
> python myscript.py --verbose-helpfulto get a lot of information about what matplotlib is doing behind the scenes, what resource files are being used etc. The default verbose settings and file handles for reporting are customizable in rc."""), ('numerous small bugfixes and improvements', """ fixes for gcc-3.4, allow -dsomeflag where someflag is not a backend, errorbar now accepts barsabove to determine the plot order of the errorbar markers and lines, fixed a corrcoef bug where args is a matrix, Andrew Dalke contributed code to extend the strftime range to the new matplotlib date range, fixes to keep support for python2.2"""), ) versioninfo['0.63'] = ( ('image interpolation', """\ image interpolation works properly. I think I have finally and for real this time fixed the image interpolation / edge effect bug. It turns out there was a bug in antigrain (very unusual!) that was just found, fixed, and released. I've incorporated the latest release into matplotlib, and after talking with the Maxim implemented a solution in matplotlib which fixes the edge problem w/o the view lim hack used previously. Basically, I pad the edges of the input image. This is described in more detail in the new image_interp.py. There is still an occasional off by 1 rounding problem that causes a 1 pixel error (this is independent of the interpolation/edge bug)."""), ('new dates handling', """\ The dates handling is rewritten from the ground up, and now requires python2.3. It makes extensive use of dateutil for date ticking. All of your old date code will break, but it's an easy port. In particular, note that the date tick location constructors now have a different meaning. See API_CHANGES, matplotlib.dates, the updated date demos in examples/pylab/ and the new dates tutorial at dates tutorial."""), ('numerix supports both extensions at compile time', """\ setup.py now automatically detects Numeric, numarray or both, and compiles in the appropriate extension code. Thus you can use matplotlib with either or both packages and still get the optimal performance. So it is no longer necessary to set NUMERIX in setup.py, but it is necessary to have the extensions you want compiled available at the time you compile matplotlib. The win32 build is for numarray 1.1."""), ('xlim, ylim, xticks and yticks',"""\ New functions xlim, ylim, xticks and yticks to make setting axis limits, tick locations and labels more natural and elegant."""), ('print to file obj in agg', """\ Added print to file handle for backend agg; see print_stdout.py. Useful for webapp servers who want to print to a pipe."""), ('x and y coord reporting', """\ x and y coords are printed in the toolbar on nouse motion in backends gtk* and tkagg (not implemented yet in wx*). You can set the axis attributes ax.fmt_xdata and ax.fmt_ydata with callable functions to control the formatting of the reported coords (default uses the major tick formatter). See coords_report.py and date_demo1.py."""), ('axhline, axvline, axhspan and axvspan', """\ Added axhline, axvline, axhspan and axvspan for plotting lines and rectangles (spans) in mixed data/axes coords. This is useful if for example, you want to provide a threshold line or range where the x range spans the axes (0-1 in axes coords) and the y range is given in data units. See axhspan_demo.py."""), ) versioninfo['0.62'] = ( ('ipython support', """\ Iteractive support in ipython with ipython -pylab, which detects your backend and loads the appropriate interactive, threaded shell, as well as all of matplotlib.matlab and numerix. Requires ipython-0.6.3. Backend status summary: linux (all backends working), OSX (tkagg and gtk* work), win32 (tkagg only). Thanks Fernando Perez! """), ('Log ticking and formatting', """Excellent improvements in log ticking and formatting. You can now do log plots in any base with major and minor tick support. You can easily customize the location of the minor ticks with the subs arguments. See the new screenshot and example and help for the log funcs, eg loglog. Mathtext exponential labeling for log plots. Thanks Darren Dale and Gregory Lielens.
# base 16 semilog x plot with minor ticks on the 2s, 4s and 8s semilogx(x,y, basex=16, subsx=[2,4,8])"""), ('Mathtext optimizations', """\ Mathtext now more than 5x faster. Thanks to Paul Mcguire for optimizations in both pyparsing and the matplotlib grammar! Warning, mathtext broken on python2.2. We hope to fix this soon. """), ('FLTKAgg backend - alpha', """\ Gregory Lielens submitted an fltkagg backend which requires CVS pyfltk. Feedback please! """), ('Bug fixes', """\ Fixed some image edge effects, a ttf read problem in backend_ps on win32, several errorbar problems, a HOME dir bug on win32, grid w/o args now toggle grid state """), ) versioninfo['0.61'] = ( ('toolbar2', """\ A new, enhanced, navigation toolbar. Set toolbar : toolbar2 in matplotlibrc to try it out. Tutorial on the new toolbar is at toolbar2 tutorial. Note that this toolbar behaves very differently than the classic toolbar. To use it, you must click on the pan/zoom or zoom to rect and then interact with the axes by dragging your mouse over it. The 'forward' and 'back' buttons are used to navigate between previously defined view limits. At some point we'll add multiple simultaneous axes support for the new toolbar but we're still mulling over the interface - if you need it you can still uses toolbar : classic."""), ('Mathtext for PS!!!', """\ Also, PS now embeds TrueType fonts so the same fonts you use in the *Agg GUIs should be displayed in PS output. Thanks Paul Barrett!"""), ('imread', """\ The imread function is used to load PNGs into arrays. I'd like to add more image loaders and savers down the road."""), ('New event handling', """\ The functions mpl_connect and mpl_disconnect are used for backend independent event handling. The callback signature is func(event). See events tutorial and coords_demo.py. The new events carry lots of useful information in them, like the coords in display and data units, the axes instance they were over, keys pressed during the event and more."""), ('svg fixes', """\ Many fixes to the SVG backend, including page layout, font support and image. SVG is now considered alpha. You can save ps/eps/svg figures from GUI backends by providing the right extensions. SVG is currently the fastest backend in my tests."""), ('More memory leaks fixed', """\ See leaks FAQ for details. My estimate is that complex figures (multiple subplots, images, etc..) now leak no more than 10-50 bytes per figure. Down from several hundred bytes per figure in 0.60."""), ('Rotated mathtext', """\ Vertical mathtext in backend_agg (ylabels now work properly!). mathtext with arbitrary rotations in PS. Thanks Jim Benson and Paul Barrett!"""), ('Abbreviated line props', """\ Added some abbrev functions in matplotlib.lines, mainly for interactive users trying to save key strokes. markerfacecolor is a lot of keys! For lines, these abbrevs were added
aa : antialiased c : color ls : linestyle lw : linewidth mec : markeredgecolor mew : markeredgewidth mfc : markerfacecolor ms : markersizeThus you can type --not necessarily recommended for readability in scripts or apps but great for throwaway use in interactive shells
# no antialiasing, thick green markeredge lines >>> plot(range(10), 'ro', aa=False, mew=2, mec='g')Analogs in matplotlib.patches
aa : antialiased lw : linewidth ec : edgecolor fc : facecolor"""), ('local rc files', """\ You can put a matplotlibrc file in a dir to override the one in your HOME dir. If you have a project, say a book, and you want to make a bunch of images with the same look and feel for the book, you can place a custom rc file in the code dir for that book and this won't affect the configs you use for normal, interactive use."""), ('Installing', """\ Updated installing instructions at installing (see also INSTALL in src distro). Fixed a tk/osx install problem in setupext.py"""), ('wx cursor demo', """\ New demo for wx/wxagg showing how to to make a flicker free cursor that follows the mouse and reports the coords in a status bar - see wxcursor_demo.py"""), ('bug fixes', """\ Numerous bug fixes and minor enhancements detailed at CHANGELOG"""), ) versioninfo['0.60'] = ( ('figure images', """\ pixel-by-pixel, not resampled, images with the figimage command. Multiple figure images (ie mosaics) with alpha blending are supported. See figimage_demo.py """), ('multiple axes images with imshow', """\ You can compose multiple axes images with alpha blending. See screenshot layer_images """), ('unified color limit and color mapping arguments', """\ pcolor, scatter, imshow and figimage now have the same color map and scaling arguments. Interactive control of colormap and color scaling with new matplotlib.matlab commands jet, gray and clim. New matplotlib rc parameters for default image params """), ('image origin can be upper or lower', """\ see image_origin.py """), ('support for py2exe', 'see py2exe_examples.zip'), ('new matplotlib.matlab command rc', """\ Use rc for dynamic control of rc parameters. See matplotlib.pyplot.html#-rc and example customize_rc.py"""), ('draw command', """\ new draw command to redraw the figure - use this in place of multiple calls to show. This is equivalent to doing get_current_fig_manager().canvas.draw(), but takes less typing :-) """), ('Elaborate finance demo', """\ New finance demo shows off may of the features of matplotlib - see screenshot at finance_work2"""), ('dynamic image demo', """\ Andrew Straw submitted a dynamic_image example. The wx version is still in progree and has some flicker problems, but the gtk version is pretty cool - dynamic_image_gtkagg.py"""), ('Bug fixes', 'dynamic_demo_wx, figure legends, memory leaks, axis scaling bug related to singleton plots'), ) versioninfo['0.54'] = ( ('More general transformation architecture', """Earlier versions of matplotlib handled transformation of x and y separately (ie we assumed all transformations were separable) but this makes is difficult to do rotations or polar transformations, for example. The new transformation lays the framework for doing general transformations; see the transforms module."""), ('More efficient pcolor', """ pcolor is now implemented with polygon collections which provides significantly faster performance across backends. The return value from pcolor is now a PolyCollection object rather than a list of patches, but the API is largely compatible. See API_CHANGES. The old function pcolor_classic is retained for full backward compatibility. """), ('New scatter plots', """ The scatter command is rewritten, and is implemented in the backend with a new polygon collection class. For large scatter plots, the performance is 5 times faster across all backends and 10 times faster for the *Agg backends. Also, scatter works with many symbols: diamonds, sqaures, oriented triangles, circles and more. As with pcolor, the scatter command returns a collection instance rather than a list of patches as before; see API_CHANGES
Also the size argument is now in points^2 (the area of the symbol in points) and is not in data coords as before. This fixes a few problems: symbols are not skewed by unequally shaped axes, scatter works with log coords w/o distoring the symbol, and it is matlab compatible.
The function scatter_classic is the old scatter function and will work identically. """), ('Enhanced mathtext', r""" A significant rewrite of the mathtext module provides much more precise layout. The freetype component has been factored out of the layout engine and replaced by an abstract class for font handling. This lays the groundwork for ps mathtext. The text clipping problems have been fixed. Added spacing commands '\/' (small space) and '\ ' (regular space), and '\hspace{frac}' (space is fraction of pointsize) as well as composite chars such as \angstrom. Fixed over/under subscripts so you can say x_i^j and nested subscripts if you do x_i_{j} (you need the curlys)"""), ('Many new plot symbols and markers', """Thanks Gary Ruben. See plot. """), ('Font cacheing', """Paul Barrett added caching support to the font manager to increase performance. This and other changes have dramatically improved postscript backend performance. """), ('Newlines in text', """After much encouragement from Al, I finally got around to supporting newline separated text in the Text frontend, so this is no longer backend dependent. As a bonus, it even works with arbitrary rotations. There is an additional text attribute 'multialignment' that specifies the alignment of the lines in multiline text. See multiline.py and alignment screenshot. Works with all text instances except mathtext."""), ('Axes hold', """\ matlab compatible hold command determines whether subsequent plot commands overlay current plot or clear the axes by default. Default setting is set in matplotlibrc and toggled by the hold command. """), ('New rc file options', """\ You can control grid properties and tick padding (the space between the axes and tick label) in matplotlibrc. The new options and defaults are
axes.hold : True # whether to clear the axes by default on # each plot command. Toggle with hold command grid.color : k # grid color grid.linestyle : : # dotted grid.linewidth : 0.5 # in points tick.major.pad : 4 # distance to major tick label in points tick.minor.pad : 4 # distance to the minor tick label in points"""), ('Full dash control', """You can precisely control the dashes with a sequence of on off ink in points. See dash_control.py """), ('Removed close buttons from GUI', """Steve Chaplin persuasively argued these were a bad idea. It's taken me a while not to instinctively try and click on the missing buttons, but I'm used to it now. """), ('Properly aligned text with arbitrary alignments', """You can now expect horizontal and vertical alignment specifications to work with text at an arbitrary angle, eg, 45 degrees. See alignment_test.py """), ('Added stem plotting command', """ See stem and stem_plot.py"""), ('Bug fix roundup', """ See CHANGELOG for details. Executive summary: fixed ps centering, errorbar autoscaling, constant data plot, copy tick attribute, mathtext fontsizing in interactive mode, missing draw if interactive, some numerix/numarray incompatibilities in type handling, agg memory leak, wx tooltips and close not returning interpreter."""), ) versioninfo['0.53'] = ( ('Improved font manager and support', """ Paul Barrett has thoroughly overhauled font support. FontTools and ttfquery are no longer required for font finding as matplotlib now has a completely freestanding freetype2 implementation and font finder. Among other things, this should enable you to specify fonts in your scripts and matplotlibrc file and generate consistent figures across backends and operating systems. The font finder algorithm and implementation are based on the W3C standard.
See the font manager module documentation, the fonts documentation and the updated matplotlibrc file for more details; please update your matplotlibrc files as described in that link. """), ('Backend WXAgg', """ Antigrain rendering to wxpython applications and figure windows. Now wx users have access to all the latest matplotlib functionality, including mathtext, antialised drawing, alpha blending and image support. """), ('Major and minor ticks', """ Full support for major and minor ticks with a bevy of more intelligent tick locators supplied in the ticker module. Fully customizable and user definable tick locators and formatters. See major_minor_demo1.py and major_minor_demo2.py. The default tick labeler is much more intelligent is choosing good tick locations. """ ), ('Date plot', """ A new command plot_date command for plotting date dependent data; see date demo. Converters supplied in the dates module allow you to work with a variety of datetime instances. Custom date locators and formatters allow you to place major and minor ticks by minute, hour, weekday, month, year, etc, and use strftime format strings to format the ticks. See examples date_demo1.py and date_demo2.py. The dates documentation provides an overview and guide to with dates."""), ('Ported image support to numarray and postscript backend', """ The image module now works with Numeric or numarray, and now works in the postscript backend as well as GTKAgg, TkAgg, WXAgg, Agg, and GTK. """), ('Changes to matplotlibrc', """ Many features added to the default config file for font support, tkagg windowing in win32, and more. Please use the new file at matplotlibrc. 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. """), ('load and save commands', """ Helper functions for loading and saving ASCII arrays. See load and save. """), ('Two scales on the same axes', """ Added some features to the axis and ticks to allow two plots with different scales on the "same" axes with different scales, ticks and labels on the left and right side of the x axis. To see why same is quoted, see two_scales.py. """ ), ('finance module', """ The finance module includes a function to fetch quotes from yahoo, to draw candlestick plots, and to draw vertical line plots for high-low range with open-close ticks to the left and right. I'm hoping that user contributions will make up the bulk of this module since I'm not a finance guy! See date demo. """ ), ) ####################################################################################### versioninfo['0.52'] = ( ('Image support', """ Basic image support. Images can be specified by Numeric float arrays
imshow(X) If X is MxN, assume luminance (grayscale) If X is MxNx3, assume RGB If X is MxNx4, assume RGBA imshow(X, cmap) # plot X using colormap; see examples/pylab/pcolor_demo2.pysee imshow and the image_demo*.py examples in the matplotlib src distribution. Set BUILD_IMAGE in setup.py for image support. Currently available on Agg, GTKAgg, TkAgg and GTK backends. win32 GTK users should use GTKAgg unless pygtk is compiled with Numeric support. The pseudo-color images generated with imshow are 8 million times faster than pcolor's. """), ('Figure legends', """ In addition to adding legends to the axes with the legend command, you can place legends anywhere in the figure with figlegend """), ('fill command', """ Andrew Straw wrote a fill command to plot filled polygons. See fill_demo.py """), ('specgram command', """ Make 2D spectrograms with specgram. Requires image support; see specgram_demo.py """), ('Bugfixes and minor improvements', """\
plot([1,2,3], [1,2,3], 'go-', label='line 1', linewidth=2) plot([1,2,3], [1,4,9], 'rs', label='line 2') axis([0, 4, 0, 10]) legend()"""), ('Bugfixes and minor improvements', """\