Menu

[r8871]: / trunk / htdocs / whats_new.html.template  Maximize  Restore  History

Download this file

2030 lines (1635 with data), 84.6 kB

# 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.3'] = (

('wind barbs', """Ryan May has added support for wind barbs, which are popular among meterologists.  These are similar to direction fields or quiver plots but contain extra information about wind speed and other attributes.  See <a href=examples/pylab_examples/barb_demo.py>barbs_demo.py</a>"""),

('delaunay triangularization', """Jeffrey Whitaker has added support for gridding irregularly spaced data using the Matlab (TM) equivalent griddata function.  This is a long-standing feature request for matplotlib and a major enhancement.  matplotlib now ships with Robert Kern's delaunay triangularization code (BSD license), which supports the default griddata implementation,  but there are some known corner cases where this routine fails.  As such, Jeff has provided a python wrapper to the NCAR natgrid routines, whose licensing terms are a bit murkier, for those who need bullet proof gridding routines.  If the NCAR toolkit is installed, griddata will detect it and use it.  See <a href=matplotlib.mlab.html#-griddata>griddata</a> for details.  Thanks Robert and Jeff."""),

('external backends', """backend developers and users can now use custom backends outside the matplotlib tree, by using the special syntax <pre>module://my_backend</pre> for the backend setting in the rc file, the use directive, or in -d command line argument to pylab/pyplot scripts"""),

('findobj', """Introduced a recursive object search method to find all objects that meet some matching criterion, e.g. to find all text instances in a figure.  See <a href=examples/pylab_examples/findobj_demo.py>findobj_demo.py</a>"""),

('tons of bug fixes', """Many critical bugfixes affecting memory leaks, math rendering, UI specific problems and more.  For details, see the <a href=CHANGELOG>CHANGELOG</a>""")

)

versioninfo['0.98.2'] = (

('saving transparent figures', """<a href=matplotlib.pyplot.html#-savefig>savefig</a> now supports a <i>transparent</i> keyword argument to set the figure an axes backgrounds transparent.  Useful when you want to embed matplotlib figures with transparent backgrounds into other documents"""),

('axes3d support removed', """Amid considerable controversy from the users, we decided to pull the experimental 3D support from matplotlib.  Although basic 3D support remains a goal, the 3D support we had was mainly orphaned, and we need a developer with interest to step up and maintain it."""),

('mathtext outside matplotlib', """The mathtext support in matplotlib is very good, and some folks want to be able to use it outside of matplotlib figures.  We added some helper functions to get the mathtext rendered pixel buffer as a numpy array, with an example at <a href=examples/api/mathtext_asarray.py>mathtext_asarray.py</a>"""),


('bug fixes and minor enhancements', """lots of bug fixes and feature enhancements: dpi scaling problems, better support for relative font sizes, patch collections, better <a href=matplotlib.pyplot.html#-pie>pie</a> chart label alignment, better baseline text alignment support, support for image downsampling, more better <a href=matplotlib.pyplot.html#-hist>hist</a> functionality, image rendering fixes..."""),

)

versioninfo['0.98.0'] = (

('better transformations', """In what has been described as open-heart surgery on matplotlib, Michael Droettboom, supported by <a href=http://www.stsci.edu/>STScI</a>,  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 <a href=doc/devel/add_new_projection.rst>adding a new projection</a> and the <a
href=matplotlib.transforms.html>transforms</a> module documentation"""),

('proper paths', """For the first time, matplotlib supports spline
paths across backends, so you can pretty much draw anything.  See
the <a href=screenshots.html#path_patch_demo>path_patch_demo
screenshot</a> .  Thanks again to Michael Droettboom and
<a href=http://www.stsci.edu/>STScI</a>"""),

('histogram enhancements', """<a
href=matplotlib.pyplot.html#-hist>hist</a> can handle 2D arrays and create side-by-side or stacked histograms, as well as cumulative filled and unfilled histograms; see <a href=examples/pylab_examples/histogram_demo_extended.py>histogram_demo_extended.py</a>"""),

('ginput function', """<a
href=matplotlib.pyplot.html#-ginput>ginput</a> is a blocking function for interactive use to get input from the user.  A long requested feature submitted by Gael Varoquaux.  See <a
href=examples/pylab_examples/ginput_demo.py>ginput_demo.py</a>"""),

('image optimizations', 'enhancements to speed up color mapping and panning and zooming on dense images'),


('better savefig', """<a
href=matplotlib.pyplot.html#-savefig>savefig</a> 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: <a href=matplotlib.mlab.html#-rec_groupby>rec_groupby</a>, <a
href=matplotlib.mlab.html#-rec2txt>rec2txt</a>, <a
href=matplotlib.mlab.html#-rec_summarize>rec_summarize</a>"""),

('accurate elliptical arcs', """In support of the
<a href=http://www.jpl.nasa.gov/news/phoenix/main.php>Phoenix
mission</a> 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 <a href=matplotlib.patches.html#Arc-draw>elliptical arcs</a> in the
viewport.  This provides a scale free, accurate graph of the arc
regardless of zoom level.
See <a href=screenshots.html#ellipse_demo>ellipse_demo
screenshot</a>."""),

('imread enhanced', """<a href=matplotlib.image.html#-imread>imread</a> 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 <a
href=http://www.stixfonts.org/>STIX fonts</a> for math expressions
have come online and ship with matplotlib.  See a sample of the new mathtext at <a
href=screenshots.html#mathtext_examples>mathtext_examples</a>.
"""),


('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)
<a href=http://code.enthought.com/traits/>enthought.traits</a> enabled property configuration to replace
matplotlib's <a href=matplotlibrc>rc</a> configuration using a <a href=http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/lib/matplotlib/mpl-data/matplotlib.conf.template?view=markup>maplotlib.conf</a> 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 <a href=matplotlib.mlab.html>matplotlib.mlab</a>.  See for example, <a href=examples/pylab_examples/loadrec.py>loadrec.py</a>
"""),

('pyplot', """Added a module <a href=matplotlib.pyplot.html>matplotlib.pyplot</a> 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 <a
href=matplotlib.pyplot.html#-plotfile>plotfile</a> for gnuplot style file plotting
"""),


('tons of bugfixes and minor enhancements', """See the <a href=CHANGELOG>CHANGELOG<a/> and <a href=API_CHANGES>API_CHANGES<a/> 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 <a href="examples/pylab_examples/xcorr_demo.py">xcorr_demo.py</a>"""),

('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 <a href=API_CHANGES>API_CHANGES</a>; 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 <a href=CHANGELOG>CHANGELOG</a>.'),

('new picker API', 'Better support for interactive object picking. ; see <a href=examples/event_handling/pick_event_demo.py>pick_event_demo.py</a>'),


('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
<a href=examples/pylab_examples/pcolor_log.py>pcolor_log.py</a>, based on suggestion by
Jim McDonald.  Colorbar modified to handle LogNorm.
Norms have additional "inverse" method."""),

('clipped line demo', """Added <a href=examples/pylab_examples/clippedline.py>clippedline.py</a>, 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 <a href=examples/pylab_examples/broken_barh.py>broken_barh.py</a>"""),

('annotation enhancements', """Removed lineprops and markerprops from the Annotation code
and replaced them with an arrow configurable with kwarg
arrowprops.  See <a href=examples/pylab_examples/annotation_demo.py>annotation_demo.py</a>"""),

)

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 <a
href=examples/event_handling/lasso_demo.py>lasso demo</a>
"""),

  ("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 <a href=examples/pylab_examples/ellipse_demo.py>ellipse demo.py</a>
"""),

  ("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 <a
href=examples/pylab_examples/simple3d_oo.py>simple3d_oo.py</a> """),



)

versioninfo['0.83'] = (

  ("axis('scale')", """\
Added Mark Athen's 'scale' patch, so that on a scaled axis a circle
looks like circle. See <a
href=matplotlib.pyplot.html#-axis>help(axis)</a>.
"""),

  ('New cursor and span selector widgets', """\
Added new <a href=matplotlib.widgets.html#Cursor>Cursor<a/> and <a
href=matplotlib.widgets.html#HorizontalSpanSelector>HorizontalSpanSelector</a>
to <a href=matplotlib.widgets.html>matplotlib.widgets</a>.  See <a
href=examples/widgets/cursor.py>cursor.py</a> and <a
href=examples/widgets/span_selector.py>span_selector.py</a>.  Set
<tt>useblit = True</tt> 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 <a
href=matplotlib.backend_bases.html#DrawEvent>DrawEvent</a> instance

<pre>
  def callback(event):
     #event.renderer is the backend Renderer instance
     pass
  connect('draw_event')
</pre>
"""),

  ('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 <a href=CHANGELOG>CHANGELOG</a> for details.
"""),

  ('Reorganized config files', """\

Made <tt>HOME/.matplotlib</tt> the new config dir where the
<tt>matplotlibrc</tt> file, the <tt>ttf.cache</tt>, and the
<tt>tex.cache</tt> live.  The new default filenames in
<tt>.matplotlib</tt> have no leading dot and are not hidden.  Eg, the
new names are <tt>matplotlibrc</tt>, <tt>tex.cache</tt>, and
<tt>ttffont.cache</tt>.  This is how <a
href=http://ipython.scipy.org>ipython</a> 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 <a
href=matplotlib.texmanager.html>texmanager</a> to put all files,
including temp files in <tt>~/.matplotlib/tex.cache</tt>, which allows
you to usetex in non-writable dirs.

"""),

  ('Using matplotlib.agg to draw paths', """\

Updated <a href=examples/agg_test.py>agg_test.py</a> 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 <a
href=matplotlib.figure.html#SubplotParams>SubplotParams</a>, <a
href=matplotlib.figure.html#Figure-subplots_adjust>Figure.subplots_adjust</a>
and the pylab method <a
href=matplotlib.pyplot.html#-subplots_adjust>subplots_adjust</a> and <a
href=examples/pylab_examples/subplots_adjust.py>subplots_adjust.py</a> .  Also added
a GUI neutral widget for adjusting subplots, see <a
href=examples/pylab_examples/subplot_toolbar.py>subplot_toolbar.py</a>.  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).<p>

This also makes it easier to make ganged plots -- see
<a href=examples/pylab_examples/ganged_plots.py>ganged_plots.py</a>.<p>

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 <a
href=API_CHANGES>API_CHANGES</a>.
"""),

  ('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
<a href=examples/widgets>examples/widgets</a> and <a
href=screenshots.html#slider_demo>slider_demo</a>.  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

<pre>
    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
</pre>

"""),

  ('Axes kwargs', """\
All Axes properties are now exposed via kwargs, so you can do, for
example

<pre>
  subplot(111, xlabel='time', ylabel='volts', autoscale_on=False,
         xlim=(-1,1), ylim =(0,10) )
</pre>

"""),


  ('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 <a href=API_CHANGES>API_CHANGES</a>)
"""),

)

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 <tt>text.usetex</tt> (*Agg and PS
only).  PS support requires tex, dvips and Ghostscript 8.51 (older
versions do not work properly -- test your version with <tt>gs --version</tt>).  Agg support requires tex and dvipng.
A directory <tt>~/.tex.cache</tt> 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 <a href=screenshots.html#tex_demo>tex demo screenshot</a> and
<a href=matplotlib.texmanager.html>texmanager</a>.  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 <tt>levels</tt> argument
to the contour functions has changes slightly.  See <a
href=API_CHANGES>API_CHANGES</a>.
"""),

  ('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 <a
href=matplotlib.pyplot.html#-imshow>help(imshow)</a> for details,
particularly the <tt>interpolation</tt>, <tt>filternorm</tt> and
<tt>filterrad</tt> kwargs.
"""),

    ('Text and dashes', """\
Daishi Harada contributed a patch for connecting text to points with lines.
See <a href=examples/pylab_examples/dashpointlabel.py>dashpointlabel.py</a> and <a
href=examples/pylab_examples/dashtick.py>dashtick.py</a>
"""),

    ('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 <a
href=whats_new.html#0.72-line_marker_optimizations_in_agg>here</a>.
"""),

    ('set deprecated', """\
<tt>set</tt> clashes with the python2.4 builtin <tt>set</tt>.  Use <a
href=matplotlib.artist.html#-setp>setp</a> and <a
href=matplotlib.artist.html#-getp>getp</a> instead (<tt>get</tt> still
works but I added <tt>getp</tt> for consistency).  A simple conversion
script to recursive replace uses of set and get with setp and getp is
provided in <a href=set_begone.py>set_begone.py</a>.  Use with
caution.
"""),

      ('Qt in ipython/pylab', """\
You can now use qt in <a href=http://ipython.scipy.org>ipython<a/>
pylab mode.  Thanks Fernando Perez and the <a
href=http://brainvisa.info>brainvisa</a> Orsay team
"""),

    ('agg wrapper', """\
Started work on a proper agg wrapper to expose more general agg
functionality in mpl.  See <a
href=examples/pylab_examples/agg_test.py>agg_test.py</a>.  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 <a
href=examples/pylab_examples/newscalarformatter_demo.py>newscalarformatter_demo.py</a>.
"""),

    ('Small features', """\
<tt>linewidth</tt> and <tt>faceted</tt> kwargs to <a
href=matplotlib.pyplot.html#-scatter>scatter</a> 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 <a
href=examples/pylab_examples/line_collection.py>line_collection.py</a>, fixed
antialiased property setting in agg, added a postscript papersize <a
href=matplotlibrc>rc</a> option <tt>ps.papersize</tt>, added an
example showing how to embed mpl in a qt app <a
href=examples/user_interfaces/embedding_in_qt.py>embedding_in_qt.py</a>, 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 <a
href=matplotlib.pyplot.html#-contourf>contourf</a> and <a
href=matplotlib.pyplot.html#-clabel>clabel</a> .  See <a
href=examples/pylab_examples/contour_demo.py>contour_demo.py</a>, <a
href=examples/pylab_examples/contour_image.py>contour_image.py</a> and this <a
href=screenshots.html#pcolor_demo>screenshot</a>.  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 <a
href=matplotlib.figure.html#Figure-add_subplot>Figure API</a> for API
developers.  < a
href=matplotlib.pyplot.html#-colorbar>pylab.colorbar</a> 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 <tt>plot(x,y,'+')</tt> or any
other line marker.  Here are some numbers, where N is the number of
symbols

<pre>
                   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
</pre>
"""),

 ('log plot enhancements', """\
Lots of work making log plots <i>just work</i>.  You can toggle log y
axes with the <tt>l</tt> ("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 <a href=API_CHANGES>API_CHANGES</a> and the <a href=matplotlib.pyplot.html#-contour>contour</a> 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
<a href=matplotlib.pyplot.html#-matshow>matshow</a>  Example at <a href=examples/pylab_examples/matshow.py>matshow.py</a>.  Thanks Fernando!"""),

('New interactive gtk shhell examples', """\

New <a href=examples/user_interfaces/interactive.py>interactive.py</a> which shows you
how to use matplotlib in a custom gtk shell, if for some reason <a
href=http://ipython.scipy.org>ipython</a> is not suitable for you</a>."""),

('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
<a href=examples/pylab_examples/shared_axis_demo.py>shared_axis_demo.py</a> - 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 <a href=API_CHANGES>API_CHANGES</a>.  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
<pre>
    >>> import matplotlib.pylab
    >>> matplotlib.pylab.__all__
</pre>
"""),

  ('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 <a href=examples/pylab_examples/contour_demo2.py>contour_demo2.py</a>"""),

  ('colorbar enhancements', """\
Horizontal colorbars supported with keyword arg <tt>orientation='horizontal'</tt> and colorbars can be placed in an arbitrary axes with keyword arg <tt>cax</tt>.  See <a href=matplotlib.pyplot.html#-colorbar>colorbar</a>"""),

  ('accents in mathtext', """\
Added accents to mathtext: <tt>\hat, \breve, \grave, \bar, \acute, \tilde,
\vec, \dot, \ddot</tt>.  All of them have the same syntax, eg to make an
overbar you do <tt>\bar{o}</tt> or to make an o umlaut you do <tt>\ddot{o}</tt>. The
shortcuts are also provided, eg: <tt>\"o \'e \`e \~n \.x \^y </tt>

See <a href=examples/pylab_examples/accent_demo.py>accent_demo.py</a>.
"""),

  ('fixed super/subscript parsing in mathtext', """\
Widowed superscripts now work, eg <tt>r'$^12\rm{CO}$'</tt>
"""),


  ('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 -- <a href=users_guide.pdf>users_guide.pdf</a>.
"""),

  ('pie charts', """\
See <a href=screenshots.html#pie_demo>pie screenshot</a>.
"""),

  ('object picking', """\

Support for object picking - see <a
href=examples/event_handling/picker_demo.py>examples/picker_demo.py</a>.  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
<a href=examples/event_handling/keypress_demo.py>keypress_demo.py</a>.
"""),

  ('shadow effect', """\
<a href=matplotlib.patches.html#Shadow>Shadow</a> patch class provides
a shadow effect for polygons, legends, pie charts - eg,
<a href=screenshots.html#legend_demo>legend screenshot</a>.
"""),

  ('text rotation example', """\
New <a href=examples/pylab_examples/text_rotation.py>examples/pylab_examples/text_rotation.py</a>
demonstrates how text rotations and
alignment work in matplotlib.  """),

  ('Bug fix roundup', """\
  <ul>
  <li>Fixed PS mathtext bug where color was not set.</li>
  <li>Fixed an agg text rotation alignment bug, fixed some text kwarg
    processing bugs.</li>
  <li>Refactored event handling - multiple connects and disconnects now
    work across backends.  See examples/pylab_examples/coords_demo.py, especially
    with test_disconnect.</li>
  <li>Fixed a tkagg interactive bug that caused segfaults in some
    conditions.</li>
  </ul>

  """),

  )

versioninfo['0.65'] = (
  ('matlab(TM) now pylab', """\
matlab namespace renamed pylab - see <a
href=matplotlib_to_pylab.py>matplotlib_to_pylab.py</a> for details on
conversion.  <a href=http://ipython.scipy.org>ipython</a> pylab users
should grab version 0.6.6.  You can import the matlab interface (now
known as pylab interface) with

<pre>
   from pylab import blah              # OK
   from matplotlib.pylab import blah   # OK
   from matplotlib.matlab import blah  # Deprecated
</pre>"""),

  ('contour', """\
contouring with the <a href=matplotlib.pyplot.html#-contour>contour</a>
function!!  Thanks to Nadia Dencheva.  See <a
href=examples/pylab_examples/contour_demo.py>contour_demo.py</a>.  And there was much
rejoicing!
  """),

  ('enhanced set and get introspection', """\
matlab compatible <a href=matplotlib.pyplot.html#-set>set</a> and <a
href=matplotlib.pyplot.html#-get>get</a> introspection to determine
settable properties and their values.  See <a
href=examples/pylab_examples/set_and_get.py>set_and_get.py</a>.  Sample usage

<pre>
   >>> 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...
</pre>
  """),

  ('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 <a href=examples/pylab_examples/zorder_demo.py>zorder_demo.py</a>.
  """),

  ('delaxes', """\
You can now delete a specified axes or the current axes with <a href=matplotlib.pyplot.html#-delaxes>delaxes</a>
  """),

  ('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 <a href=matplotlib.pyplot.html#-connect>connect</a> and <a href=matplotlib.pyplot.html#-disconnect>disconnect</a> 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 <tt>bbox</tt> property which is a dict of
Rectangle properties.  If set, the text instance will display in a
rectanglular bounding box.  Example usage
<pre>
    title('hi mom', bbox={'facecolor':'r', 'alpha':0.5})
</pre>

  """),

  ('legend properties exposed as keyword arguments', """
See <a href=matplotlib.pyplot.html#-legend>legend</a>.
  """),

  ('ishold', """\
<a href=matplotlib.pyplot.html#-ishold>ishold</a> to inspect the hold state.
  """),

  ('Sparsity pattern visualtization', """\
New plotting functions <a href=matplotlib.pyplot.html#-spy>spy</a>, <a href=matplotlib.pyplot.html#-spy2>spy2</a> for matrix sparsity visualization.
  """),

('customizing polar plots', """\
pylab interface functions <a
href=matplotlib.pyplot.html#-rgrids>rgrids</a> and <a
href=matplotlib.pyplot.html#-thetagrids>thetagrids</a> for
customizing the grid locations and labels for polar plots - see
<a href=examples/pylab_examples/polar_demo.py>polar_demo.py</a>."""),

('interactive control functions', """\
Added <a
href=matplotlib.pyplot.html#-ion>ion</a>, <a
href=matplotlib.pyplot.html#-ioff>ioff</a> and <a
href=matplotlib.pyplot.html#-isinteractive>isinteractive</a> to pylab
interface for control of interactive mode.  See updated discussion at
<a href=interactive.html>interactive matplotlib</a>."""),

('bug fixes', """\
<ul>
  <li>Fixed colorbar bug with scatter</li>
  <li>SVG clipping problem - Thanks Norm Peterson</li>
  <li>numerous small legend bugs fixed</li>
  <li>zoom to rect works with reversed axis limits - thanks Gregory</li>
  <li>fontsizing problem fixes, ps plots correctly sized, landscape
      support for ps output</li>
  <li>smaller, leaner, meaner PS output - Thanks Jochen</li>
  <li>make the Gtk backends build without an X-server connection -
      Thanks Jochen</li>
</ul>"""),
)

versioninfo['0.64'] = (
  ('polar plots', """\

polar plots with the polar command.  These create a axes.PolarAxes
instance, which defines the default axes, gridlines, etc.  Other plot
types can be used on polar axes, eg scatter.  See <a
href=examples/pylab_examples/polar_demo.py>polar_demo.py</a>, <a
href=examples/pylab_examples/polar_scatter.py>polar_scatter.py</a> and <a
href=screenshots.html#polar_demo>polar_demo<a/>."""),


  ('cairo backend', """\
Steve Chaplin has contributed a cairo and a gtkcairo backend - <a
href=http://cairographics.org>cairographics</a>.  Cairo is a vector
graphics library designed to provide high-quality display and print
output. Currently supported output targets include the X Window
System, OpenGL, in-memory image buffers, and image files (PNG and
PostScript).  See <a href=backends.html#Cairo>Cairo backend</a> for
details and install instructions"""),


  ('ipython integration', """\
Fernando has continued his excellent work integrating matplotlib with
<a href=http://ipython.scipy.org>ipython<a/> and a number of pylab
bugs have been ironed out.  matplotlib has incoroprated ipython's
numutils in the matplotlib.mlab module - Thanks Fernando.  See
IPython-0.6.4 - all similarities betwen matplotlib and ipython version
numbers are purely coincidental."""),

  ('postscript improvements', """
Jochen Voss has made a number of bugfixes and improvements to the
postscript backend, including text layout problems.  PS backend should
now be DSC compliant."""),

  ('Customizing ticks', """\
xticks and yticks now take kwargs so you can do, for example
<pre>
   >>> xticks( arange(3), ('Tom', 'Dick', 'Harry'), fontsize=14 )
</pre>
"""),

  ('PIL support', """\

<a href=matplotlib.pyplot.html#-imshow>imshow</a> now supports PIL
images - see <a href=examples/pylab_examples/image_demo3.py>image_demo3.py</a>.
Thanks Andrew Straw."""),

  ('barh', '<a href=matplotlib.pyplot.html#-barh>barh</a> for horizontal bar charts; see <a href=examples/pylab_examples/barh_demo.py>barh_demo.py</a>'),

  ('Verbose', """\

Added a verbose class to allow different levels of verbosity - see <a
href=matplotlibrc>matplotlibrc</a> for details.  Eg, you can now do
<pre>
     > python myscript.py --verbose-helpful
</pre>

to 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 <a
href=examples/pylab_examples/image_interp.py>image_interp.py</a>.  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 <a href=API_CHANGES>API_CHANGES</a>, <a
href=matplotlib.dates.html>matplotlib.dates</a>, the updated date
demos in examples/pylab_examples/ and the new dates tutorial at <a
href=tutorial.html#dates>dates tutorial</a>."""),

('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 <a href=matplotlib.pyplot.html#-xlim>xlim</a>, <a
href=matplotlib.pyplot.html#-ylim>ylim</a>, <a
href=matplotlib.pyplot.html#-xticks>xticks</a> and <a
href=matplotlib.pyplot.html#-yticks>yticks</a> 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 <a
href=examples/pylab_examples/print_stdout.py>print_stdout.py</a>.  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 <a
href=examples/pylab_examples/coords_report.py>coords_report.py</a> and <a
href=date_demo1.py>date_demo1.py</a>."""),

        ('axhline, axvline, axhspan and axvspan', """\
Added <a href=matplotlib.pyplot.html#-axhline>axhline</a>, <a
href=matplotlib.pyplot.html#-axvline>axvline</a>, <a
href=matplotlib.pyplot.html#-axhspan>axhspan</a> and <a
href=matplotlib.pyplot.html#-axvspan>axvspan</a> 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 <a href=examples/pylab_examples/axhspan_demo.py>axhspan_demo.py</a>."""),

)

versioninfo['0.62'] = (

    ('ipython support', """\
Iteractive support in <a href=http://ipython.scipy.org>ipython</a>
with <tt>ipython -pylab</tt>, 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
<a href=screenshots.html#log_shot>screenshot and example</a> and help for
the log funcs, eg <a href=matplotlib.pyplot.html#-loglog>loglog</a>.
Mathtext exponential labeling for log plots.  Thanks Darren Dale and
Gregory Lielens.

<pre>
  # base 16 semilog x plot with minor ticks on the 2s, 4s and 8s
  semilogx(x,y, basex=16, subsx=[2,4,8])
</pre>
"""),

    ('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 <tt>toolbar : toolbar2</tt>
in matplotlibrc to try it out.  Tutorial on the new toolbar is at <a
href=tutorial.html#toolbar2>toolbar2 tutorial</a>.  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 <tt>toolbar : classic</tt>."""),

    ('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 <a href=matplotlib.pyplot.html#-imread>imread</a> 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 <tt>func(event)</tt>.
See <a href=tutorial.html#events>events tutorial</a> and <a
href=examples/pylab_examples/coords_demo.py>coords_demo.py</a>.  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 <a href=faq.html#LEAKS>leaks FAQ</a> 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

<pre>
    aa  : antialiased
    c   : color
    ls  : linestyle
    lw  : linewidth
    mec : markeredgecolor
    mew : markeredgewidth
    mfc : markerfacecolor
    ms  : markersize
</pre>

Thus you can type --not necessarily recommended for readability in
scripts or apps but great for throwaway use in interactive shells
<pre>
    # no antialiasing, thick green markeredge lines
    >>> plot(range(10), 'ro', aa=False, mew=2, mec='g')
</pre>

Analogs in matplotlib.patches

<pre>
    aa  : antialiased
    lw  : linewidth
    ec  : edgecolor
    fc  : facecolor
</pre>
"""),

    ('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 <a
href=installing.html>installing</a> (see also INSTALL in src distro).
Fixed a tk/osx install problem in setupext.py</a>"""),

    ('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
<a href=examples/user_interfaces/wxcursor_demo.py>wxcursor_demo.py</a>"""),

    ('bug fixes', """\
Numerous bug fixes and minor enhancements detailed at
<a href=CHANGELOG>CHANGELOG</a>"""),
)

versioninfo['0.60'] = (

    ('figure images', """\
pixel-by-pixel, not resampled, images with the <a
href=matplotlib.pyplot.html#-figimage>figimage</a> command.  Multiple
figure images (ie mosaics) with alpha blending are supported.  See <a
href=examples/pylab_examples/figimage_demo.py>figimage_demo.py</a>
"""),

    ('multiple axes images with imshow', """\
You can compose multiple axes images with alpha blending.  See
screenshot <a
href=screenshots.html#layer_images>layer_images</a>
"""),

    ('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 <a
href=examples/pylab_examples/image_origin.py>image_origin.py</a>
"""),

    ('support for py2exe', 'see <a href=py2exe_examples.zip>py2exe_examples.zip</a>'),

    ('new matplotlib.matlab command rc', """\
Use <a href=matplotlib.pyplot.html#-rc>rc</a> for dynamic control of rc
parameters.  See matplotlib.pyplot.html#-rc
and example <a href=examples/pylab_examples/customize_rc.py>customize_rc.py</a>"""),

    ('draw command', """\
new <a href=matplotlib.pyplot.html#-draw>draw</a> 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 <a href=screenshots.html#finance_work2>finance_work2</a>"""),

    ('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 - <a
href=examples/animation/dynamic_image_gtkagg.py>dynamic_image_gtkagg.py</a>"""),

    ('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 <a
href=matplotlib.transforms.html>transforms</a> module."""),

    ('More efficient pcolor', """ pcolor is now implemented with <a
href=matplotlib.collections.html#PolyCollection>polygon
collections</a> 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
<a href=API_CHANGES>API_CHANGES</a>.  The old function pcolor_classic
is retained for full backward compatibility.  """),

    ('New scatter plots', """ The <a
href=matplotlib.pyplot.html#-scatter>scatter</a> 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 <a
href=API_CHANGES>API_CHANGES</a><p>

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.<p>

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
<a href=matplotlib.pyplot.html#-plot>plot</a>.
"""),

    ('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 <a href=examples/pylab_examples/multiline.py>multiline.py</a>
and <a href=screenshots.html#align_text>alignment screenshot</a>.
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 <a
href=matplotlib.pyplot.html#-hold>hold</a> 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

<pre>
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
</pre>
"""),


    ('Full dash control', """You can precisely control the dashes with
a sequence of on off ink in points.  See <a
href=examples/pylab_examples/dash_control.py>dash_control.py</a> """),

    ('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 <a href=examples/pylab_examples/alignment_test.py>alignment_test.py</a>
"""),

    ('Added stem plotting command', """
See <a href=matplotlib.pyplot.html#-stem>stem</a> and <a href=examples/pylab_examples/stem_plot.py>stem_plot.py</a>"""),

    ('Bug fix roundup', """ See <a href=CHANGELOG>CHANGELOG</a> 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 <a
href=http://www.w3.org/TR/1999/REC-CSS1-19990111>W3C standard</a>.<p>

See <a href=matplotlib.font_manager.html>the font manager module</a>
documentation, the <a href=fonts.html>fonts documentation</a> and the
updated <a href=matplotlibrc>matplotlibrc</a> 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 <a
href=matplotlib.ticker.html>ticker</a> module.  Fully customizable and
user definable tick locators and formatters.  See <a
href=examples/pylab_examples/major_minor_demo1.py>major_minor_demo1.py</a> and <a
href=examples/pylab_examples/major_minor_demo2.py>major_minor_demo2.py</a>.  The
default tick labeler is much more intelligent is choosing good tick
locations.
"""
     ),

    ('Date plot', """
A new command <a href=matplotlib.pyplot.html#-plot_date>plot_date</a>
command for plotting date dependent data; see <a
href=screenshots.html#date_demo>date demo</a>.  Converters supplied in
the <a href=matplotlib.dates.html>dates</a> 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 <a
href=examples/pylab_examples/date_demo1.py>date_demo1.py</a> and <a
href=examples/pylab_examples/date_demo2.py>date_demo2.py</a>.  The <a
href=matplotlib.dates.html>dates documentation</a> 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 <a
href=matplotlibrc>matplotlibrc</a>.  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 <a
href=matplotlib.pyplot.html#-load>load</a> and <a
href=matplotlib.pyplot.html#-save>save</a>.
"""),

    ('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 <a href=examples/pylab_examples/two_scales.py>two_scales.py</a>.
"""
     ),

    ('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 <a href=screenshots.html#date_demo>date demo</a>.
"""
     ),
    )
#######################################################################################

versioninfo['0.52'] = (
    ('Image support', """
Basic image support.  Images can be specified by Numeric float arrays
<pre>
     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_examples/pcolor_demo2.py
</pre>

see <a href=matplotlib.pyplot.html#-imshow>imshow</a> 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 <a href=matplotlib.pyplot.html#-figlegend>figlegend</a>
"""),

    ('fill command', """
Andrew Straw wrote a <a href=matplotlib.pyplot.html#-fill>fill</a>
command to plot filled polygons.  See <a
href=examples/pylab_examples/fill_demo.py>fill_demo.py</a>
"""),

    ('specgram command', """ Make 2D spectrograms with <a
href=matplotlib.pyplot.html#-specgram>specgram</a>.  Requires image
support; see <a href=examples/pylab_examples/specgram_demo.py>specgram_demo.py</a>
"""),

	('Bugfixes and minor improvements', """\

<ul>
  <li> Tk : Fixed a close figure bug in interactive mode</li>
  <li> GTK : Much improved mathtext performance thanks to patch by Trevor Blackwell</li>
    <li> All : Fixed a bug that showed up in successive calls to plot with just one plot argument</li>
</ul>
"""),
     )
################################################################################


versioninfo['0.51'] = (
    ('Tkinter backend', """Todd Miller has written a Tkinter backend.
This is a significant step forward, because now matplotlib works out
of the box with any python + numeric.  The Tkinter backend works
interactively from any python shell - see the <a
href=interactive.html>interactive documentation</a>.  Also, because
TkAgg uses the agg backend for rendering, it has all of the features
of agg, including fast antialiased rendering, freetype2, alpha
blending, mathtext, and so on.  See the <a
href=backends.html#TkAgg>TkAgg backend</a>.  To use the TkAgg backend,
you must launch your scripts in interactive mode <tt>python -i
myscript.py -dTkAgg</tt>; otherwise they'll just pop up and
disappear.""" ),

    ('GTKAgg', """GTK widgets with antigrain rendering.  See the <a
href=backends.html#GTKAgg>GTKAgg backend</a>.""" ),

    ('freetype2 support added for agg backend', """With freetype2,
agg now renders fonts nicely even at very small raster sizes.""" ),

    ('math text', """matplotlib now ships with the <a
href=http://www.math.utah.edu/~beebe/fonts/bakoma.html>BaKoMa</a> TeX
Computer Modern fonts, and displays math text using TeX expressions.
See <a href=screenshots.html#mathtext_demo>screenshot</a> and the <a
href=matplotlib.mathtext.html>mathtext</a> documentation for usage
information.  Currently available on GTK, Agg, TkAgg and GTKAgg. If
you build matplotlib yourself, you need to edit setup.py and set
BUILD_FT2FONT"""),

    ('configuration file', """A configuration file is placed in your
install path (distutils.sysconfig.PREFIX + 'share/matplotlib').  This
determines many of the default figure properties: the default backend,
line properties, text properties, colors, and more.  See <a
href=matplotlibrc>matplotlibrc</a> for an example configuration
file.  Place this in your home dir (linux and friends), or edit in the
install path (windows).  See the faqs <a
href=faq.html#MATPLOTLIBRC>matplotlibrc</a> and <a
href=faq.html#CUSTOM>overriding defaults</a>.  """),

    ('numarray support', """Todd Miller has provided a numerix module
which allows you to choose between Numeric of numarray.  You can set
Numeric or numarray in your matplotlibrc file, with an environment
variable, or from the prompt.  See the <a
href=matplotlib.numerix.html>numerix module</a> for more information
and <a href=NUMARRAY_ISSUES>numarray issues</a> for a summary of known
issues in using numarray.  """),

    ('data clipping off by default', """Data clipping, as opposed to
viewport clipping, is turned off by default.  You can change the
default behavior in <a href=matplotlibrc>matplotlibrc</a> or set it
to be true when needed as in <a
href=examples/pylab_examples/stock_demo.py>stock_demo.py</a> """),

    ('kwargs in plot commands', """The plot commands now take kwargs
that are can be used to set line properties (any property that has a
set_* method).  You can use this to set a line label (for auto
legends), linewidth, anitialising, marker face color, etc.  Here is an
example:

<pre>
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()
</pre>
"""),

	('Bugfixes and minor improvements', """\

<ul>

  <li> GTK : fixed a subplot selection GUI bug specific to
  python2.2</li>
  <li> ALL : Fixed a multiple column subplot layout bug</li>
  <li> PS : Fixed an afm parser - thanks Dominique</li>
  <li> Agg : Agg now respects antialiased=False</li>

</ul>

"""
),
)
#############################################################################

versioninfo['0.50'] = (
    ('Antigrain backend: Agg', """Adding to the growing list of image
backends is <a href=http://antigrain.com>Antigrain</a>.  This is a
backend written mostly in extension code and is the fastest of all the
image backends.  Agg supports freetype fonts, antialiased drawing,
alpha blending, and much more. The windows installer contains
everything you need except Numeric to use the agg backend out of the
box; for other platforms see <a href=backends.html#Agg>The Agg
Backend</a> """ ),


    ('Paint/libart backend', """David Moore wrote a backend for <a
href=http://sourceforge.net/projects/pypaint>pypaint</a>, a <a
href=http://www.levien.com/libart>libart</a> wrapper.  libart is a
high quality, cross platform image renderer that supports antialiased
lines, freetype fonts, and other capabilities to soon be exploited.
Thanks David!  See <a href=backends.html#Paint>The Paint Backend</a>
for more information and install instructions""" ),


        ('The Matplotlib <a href=faq.html>FAQ</a>', 'Matplotlib now has a FAQ.'),

        ('Alpha channel attribute', """All the figure elements now
have an alpha attribute to allow blending and translucency.  Not all
backends are currenly capable of supporting alpha - currently only
Agg, but Paint should be able to support this soon - see the scatter
<a href=screenshots.html#scatter_demo2>screenshot</a> for an example
of alpha at work."""),

        ('Table class added', """John Gill has developed a very nice <a
href=matplotlib.table.html>Table</a> class and <a
href=matplotlib.pyplot.html#-table>table</a> function that plays well
with bar charts and stacked bar charts.  See example code and
screenshot <a href=screenshots.html#table_demo>table_demo</a>."""),

	('new plot commands <a href=matplotlib.pyplot.html#-cla>cla</a> and <a href=matplotlib.pyplot.html#-clf>clf</a>', """Clear the current axes or figure.  Useful in interactive plotting from a python shell""" ),

	('Added x linesyle', """Matt MacMahon submitted a patch for an
'x' linestyle.  Thanks Matt! """ ),

	('Exposed legend properties', """Added methods to access the legend primities: text, lines, and rectangles to allow fine-grained control over legend properties; see <a href=examples/pylab_examples/legend_demo.py>legend_demo.py</a>""" ),

	('gd module on win32', """\
With much weeping and gnashing of teeth and help from half the people
on this globe, built a gdmodule win32 installer.  Special thanks to
Stefan Kuzminski for putting up with my endless windows confusions.
See the win32 quickstart at <a
href=backends.html#GDWIN32>installing</a> the GD backend."""
),

	('GD supports clipping and antialiased line drawing', """\
See instructions about upgrading gd and gdmodule at <a
href=backends.html#GD>Installing the GD backend</a>.  The line object
has a new 'antialiased' property, that if True, the backend will
render the line antialiased if supported.  Note antialiased drawing
under GD is slow, so be sure to turn the property off <tt>set(lines,
'antialiased', False)</tt> if you experience performance problems.  If
you need performance and antialiasing, use the agg backend."""),

	('wild and wonderful bar charts', """\
You can provide an optional argument bottom to the <a
href=matplotlib.pyplot.html#-bar>bar</a> command to determine where
the bottom of each bar is, default 0 for all.  This enables stacked
bar plots and candelstick plots -- <a
href=examples/pylab_examples/bar_stacked.py>bar_stacked.py</a>.  Thanks to
David Moore and John Gill for suggestions and code.  """),

	('Figure backend refactored', """\
The figure functionality was split into a backend independent
component <a href=matplotlib.figure.html>Figure</a> and a backend
dependent component <a
href=matplotlib.backend_bases.html#FigureCanvasBase>FigureCanvasBase</a>.
This completes the transition to a totally abstract figure interface
and improves the ability the switch backends and a figure to multiple
backends.  See <a href=API_CHANGES>API_CHANGES</a> for information on
migrating applications to the new API."""),

	('Bugfixes and optimizations', """\

<ul>

  <li> All : the yticks on the right hand side were placed incorrectly,
  now fixed</li>

  <li> All : Exposed all Figure construc attributes (figsize, dpi,
  facecolor, edgecolor) to matlab interface</li>

  <li> All : ticklabels now make a more intelligent choice about how
  many significant digits to display </li>

  <li> GD : An int truncation bug was causing the dotted lines to
  disappear</li>

  <li> GD and GTK : Fixed line width to scale with DPI</li>

  <li> GTK and WX : Lazy import of backend_ps for backend switching
  improves startup time</li>

  <li> GD, GTK and PS : Fixed minor text layout problems</li>

  <li> GD : Fixed the constant for GD which maps pixels per inch -
  this should give better agreement with other backends with he
  relative sizes of objects</li>

  <li> GTK : Dash spacing was not properly scaling with DPI</li>
  <li> GTK : Rotated text did not display correctly in some cases</li>

  <li> GTK : Lots of optimizations using cacheing in GTK backend for
  improved performace for monitoring / animation scripts.  Discovered
  and patched a memory leak in pygtk -- see <a
  href=http://bugzilla.gnome.org/show_bug.cgi?id=133681>bugzilla</a>
  which was causing repeat calls to draw() to leak memory.</li>

  <li>GTK on win32.  Fixed a problem where pygtk couldn't find Times.
  See FAQ entry <a href=faq.html#WINFONTS>GTK/Win32 font
  problem</a>.</li>

  <li>Fixed some bugs and added some features that make wx and gtk
work better interactively from a python shell</li>

</ul>

"""),



)
########################################################################

versioninfo['0.42'] = (
	('EPS output from PS backend',
"""Just add an eps extension"""),

	('PS and EPS save from GTK and WX backends with bugs fixed',
"""
A few of the bugs that were lingering in the PS output from the GTK
backend have been cleared up.  A fairly substantial refactoring of the
Text class enabled this.  Text is now backend independent and behaves
like the other artists in the figure (lines, patches, etc).
Additionally, PS and EPS save from WX backend work
"""),

	('Object picker example',
"""The file examples/pylab_examples/object_picker.py is a template showing how to
select objects in the figure with the mouse(eg, text, lines).  If you
click on the line, a properties dialog will pop up.  You can edit the
line properties.  This is just a template for those who want to
develop a GUI properties dialog.  If interested, contact the mailing
list.  It would be straight forward to extend this example to allow
you to move objects in the figure, etc..."""),



)
########################################################################

versioninfo['0.41'] = (
('Pcolor optimizations',
"""Several optimizations have improved the performance of pcolor
across all backends, 4x on the GTK backend"""),

	('PS save from GTK backend',
"""
An alpha version of the PS export functionality from the GTK backend.
Mostly works with a few know problems.  You can simply call
savefig('somefile.ps') or use the PS extension when saving from the
GUI.
"""),

	('Bug fixes',
"""
Fixed bugs in semilogy and in setting dashes under some versions of
Numeric
"""),

	('bar takes (optional)multiple color args',
"""
You can now pass bar a len(x) list of color args to have bars with
different colors.
"""),
)
##############################################################################

versioninfo['0.40'] = (
('Wx python backend',
""" Jeremy O'Donoghue has done an amazing job implementing the backend
for <a href=http://www.wxpython.org>wxpython</a>.  See <a
href=matplotlib.backends.backend_wx.html>backend_wx</a> for a status
report on what's working and what the outstanding issues are."""),

	('New plotting functions',
"""
Several new plotting functions are added.  <a
href=matplotlib.pyplot.html#-psd>psd</a> plots the power spectral
density of a time series, <a href=matplotlib.pyplot.html#-csd>csd</a>
plots the cross spectral density of two time series, and <a
href=matplotlib.pyplot.html#-cohere>cohere</a> plots the coherence.
See the examples <a href=examples/pylab_examples/psd_demo.py>psd_demo.py</a> and <a
href=examples/pylab_examples/csd_demo.py>csd_demo.py</a>
"""),

	('Expanded legend capabilities',
"""
The legend class is improved, with a more sophisticated layout engine
and the ability to accept lines or rectangle patches as an optional
first argument to specify which lines/patches make up the legend.
There are also additional legend placement locations, like 'upper
center'.  See <a href=screenshots.html#legend_demo>legend_demo</a> and
<a href=screenshots.html#barchart_demo>barchart_demo</a>.
"""),

        ('Expanded errorbar capabilities',
"""
Gary Ruben contributed some code to support x and y errorbars, either
symmetric or asymmetric.  See <a
href=examples/pylab_examples/errorbar_demo.py>errorbar_demo.py</a> for examples of
all the wild and wonderful errorbar styles.  Bar charts can now also
display errorbars; see <a
href=screenshots.html#barchart_demo>barchart_demo</a>
"""),

        ('Substantially improved transform architecture',
"""
The transform architecture was refactored, allowing much more precise
layout.  Lines, patches, text, etc... can now be placed and scaled in
arbitrary units, relative axes units, or physical size.  Application
programmers who want to create lines, patches and text directly using
the API should read the <a href=matplotlib.transforms.html>transform
module</a> docs for more info.  See <a
href=matplotlib.pyplot.html#-text>text</a> for an example of how to
specify text locations in axes coords (0,0 is lower left and 1,1 is
upper right).
"""),

        )
###############################################################################

versioninfo['0.32'] = (
	('wx python backend -- development version',
"""
Jeremy O'Donoghue has done an amazing job implementing the backend for
<a href=http://www.wxpython.org>wxpython</a>.  The code is still alpha
and several of the features that will be available are under active
development.  See the code matplotlib/backends/backend_wx.py for a
report on existing features and known bugs.  If you have wxpython
installed, you can take it for a test drive with <tt>python
yourscript.py -dWX</tt> and please report any bugs not listed in the
KNOWN BUGS section of the wx src to the <a
href=http://sourceforge.net/mailarchive/forum.php?forum_id=36187>matplotlib-devel</a>
mailing list.
"""),
	('Pseudo color plots',
"""
The <a href=matplotlib.pyplot.html#-pcolor>pcolor</a> command
generates pseudo color plots.  See <a
href=screenshots.html#pcolor_demo>pcolor_demo</a> and <a
href=screenshots.html#mri_with_eeg>mri_with_eeg</a> for screenshots
and <a href=examples/pylab_examples/pcolor_demo.py>pcolor_demo.py</a> for some
example code
"""),
	('Numerous small bugfixes',
"""
Fixed reversed zoom tools, bug in ticklabel setting, bug in AFM font
path setting for PS backend, fixed a label position bug
"""),
        )
###############################################################################

versioninfo['0.29.2'] = (
    ('Log scaling',
"""
Andrew Straw chipped in provided some code to support log scaling.
Many thanks.  matplotlib now has three new commands <a
    href=matplotlib.pyplot.html#-semilogx>semilogx</a>, <a
    href=matplotlib.pyplot.html#-semilogy>semilogy</a>, and <a
    href=matplotlib.pyplot.html#-loglog>loglog</a>, and a new demo
   <a href=examples/pylab_examples/log_demo.py>log_demo.py</a>
"""),
    )
##############################################################################

versioninfo['0.29.1'] = (
    ('GTK bugfixes and interactive mode',
"""This includes several bug fixes in the GTK backend which affected
interactive mode and figure resizing.  See <a href=examples/pylab_examples/interactive2.py>interactive2.py</a> in
the new src release.
"""),
    ('Figure legends',
"""A matlab compatible legend command has been added.  See
<a href=examples/pylab_examples/legend_demo.py>legend_demo.py</a>
"""),
   ('Bug fixes in alternate color specifications',
"""Some bugs regarding alternate ways of specifying colors have been
ironed out (you can now use hex strings or 0-1 RGB tuples anywhere a
color format string is supported ).  See <a
href=examples/pylab_examples/color_demo.py>color_demo.py</a>
"""),
)
##############################################################################

versioninfo['0.29'] = (
	('Multiple output devices',
"""The major improvement in matplotlib with this release is that the
library no longer requires pygtk or GTK, and instead renders to an
abstract drawing interface.  This allows you to use matplotlib even in
environments with no X server (such as for a web application server to
make dynamic charts), and to create publication quality postscript
output.  See <a href=backends.html>output formats</a>.
"""),
        ('Improved scaling with high resolution outputs',
"""
Earlier versions of matplotlib did not properly handle the scaling of
text and marker sizes with font resolution, so when you went from a
100DPI screen image to a 600DPI output image, the text and marker
sizes appeared too small.  This has been fixed for all of the
matplotlib output formats.
"""),

        ('Reorganization of class library',
"""
The class library has been substantially refactored, to isolate the
renderer and graphics context classes that backend writers must
implement.  See backends/backend_template.py if you want to write a
backend for your favorite GUI or output format.
"""),

        ('Line class rewritten for greater matlab compatibility',
"""
The line classes have all been reorganized into a single class that
has greater matlab compatibility.  This enables you to change existing
lines to a new line style (eg, from solid line to markers with
circles) as well as supports lines with a combination of line styles
and markers times (eg, data points marked with circles and a dash line
interpolating them).
"""),

        ('Many small bug fixes',
"""
"""),
)
############################################################################

versioninfo['0.21'] = (
    ('Deprecation warnings',
"""
Several users reported Deprecation warnings with python2.3 and pygtk
1.99.18.  These were all related to passing floats rather than ints to
gtk drawing commands.  These have been cleaned up and none of the
examples generate warnings.  Let me know if you get some!
"""),
    ('Improved interactive shell',
"""
Jon Anderson posted an improved GTK shell to the pygtk mailing list.
Using this no longer requires that pygtk have threading built in.  See
<a href="examples/pylab_examples/interactive2.py">interactive2.py</a>.  Use this if you want to make plots
interactively from the python shell.
"""),
    ('Specifying colors',
"""
You can now specify colors with color format strings, RGB tuples, or
hex strings as in html.  See <a href="examples/pylab_examples/color_demo.py">color_demo.py</a>
"""),
    ('Figure text',
"""
All text in matplotlib has been in axis (data coordinates).  Sometimes
it's helpful to be able to specify text in relative figure
coordinates.  Now figures have text.  When you scroll interactively,
axis text moves with the data, figure text is fixed.  This is also
useful for making a figure title when you have multiple columns of
subplots.  See <a href="examples/pylab_examples/figtext.py">figtext.py</a>
"""),
    ('Flicker free updates',
"""
All drawing is done to a pixmap and then updated.  This allows flicker
free updates of the figure.  You can use this, for example, to build a
system monitor, which continuously shows system resources such as RAM,
CPU, etc...  See <a href="examples/pylab_examples/system_monitor.py">system_monitor.py</a> for a demo.
"""),
    )
############################################################################

versioninfo['0.2'] = (
('Font handling',
"""
Major improvements in font and text handling.  matplotlib 0.1 drew all
text in the same, non-configurable font.  In 0.2, font name, size,
weight, and angle, color, rotation, and more are easily configurable.
See the <a href=tutorial.html#text>text tutorial</a>.
"""),

('Multiple figures',
"""
Multiple figures supported with the <a
href=matplotlib.pyplot.html#-figure>figure</a> command.  See the <a
href=tutorial.html#figs_and_axes>Working with multiple figures and
axes</a>.
"""),

('Interactive shell',
"""
Interactive use from the python shell if you have pygtk compiled with
threads.  See <a href=interactive.html>Using matplotlib
interactively</a>.
"""),

('Saving figures',
""" Ability to save figures in arbitrary resolution PNG or JPEG with a
bug fix that caused saved figures to be corrupted by anything blocking
the figure window.  A GUI widget has been added to the figure toolbar
to save figures and a new command <a
href=matplotlib.pyplot.html#-savefig>savefig</a> has been added.  """),

('Navigation',
"""
A new and hopefully improved navigation toolbar has been added that
doesn't require a wheel mouse, but still works with one.  See the <a
href=tutorial.html#navigation>Navigation tutorial</a>.
"""),

('More examples and screenshots',
"""
New examples and screenshots illustrating the new text functionality,
the new plot types, and new commands.  See the examples subdirectory
in the src distribution.
"""),

('Patches',
"""
A <a href=matplotlib.patches.html#Patch>Patch</a> class added for drawing patches
(rectangles, polygons, circles).  This supports three new plotting
commands <a href=matplotlib.pyplot.html#-scatter>scatter</a>, <a
href=matplotlib.pyplot.html#-hist>hist</a> and <a href=matplotlib.pyplot.html#-bar>bar</a>,
with more to come.
"""),

('New commands',
"""
New plotting commands <a href=matplotlib.pyplot.html#-bar>bar</a>, <a href=matplotlib.pyplot.html#-close>close</a>, <a href=matplotlib.pyplot.html#-errorbar>errorbar</a>, <a href=matplotlib.pyplot.html#-figure>figure</a>, <a href=matplotlib.pyplot.html#-hist>hist</a>, <a href=matplotlib.pyplot.html#-text>text</a>,
  <a href=matplotlib.pyplot.html#-scatter>scatter</a>, <a href=matplotlib.pyplot.html#-savefig>savefig</a>, <a href=matplotlib.pyplot.html#-ylabel>ylabel</a>.
"""),

('Matplotlib on sourceforge',
"""
matplotlib homepage moved to <a
href=http://matplotlib.sourceforge.net>sourceforge</a> with a
(hopefully) more useful homepage.
"""),

('Documentation',
"""
Much better documentation and a <a href=tutorial.html>tutorial</a>.
"""),

('Refactoring',
"""
Substantial rewrite of class library.  All text now handled by the <a
href=text.html#AxisText>AxisText</a> class in text.py.  Axis handling
refactored into dedicated class <a href=figure.html#Axis>Axis</a>
defined in figure.py.
"""),
)

# sort versions
versions = versioninfo.keys()
versions.sort()
versions.reverse()
versioninfo_list = [(ver, versioninfo[ver]) for ver in versions]

@header@

+ for version, items in versioninfo_list:
<h2> <a name=@version@>What's new in matplotlib @version@</a></h2>
  + for title, description in items:
<h4> <a name="@version@-@title.replace(' ', '_')@">@title@</a></h4>
@description@<br>
  -
-

@footer@
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.