# 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.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.pylab.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 examples/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/text_rotation.py demonstrates how text rotations and alignment work in matplotlib. """), ('Bug fix roundup', """\ """), ) versioninfo['0.65'] = ( ('matlab(TM) now pylab', """\ matlab namespace renamed pylab - see matplotlib_to_pylab.py for details on conversion. ipython pylab users should grab version 0.6.6. You can import the matlab interface (now known as pylab interface) with
   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', """\ """), ) 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 polar_demo.py, polar_scatter.py and polar_demo."""), ('cairo backend', """\ Steve Chaplin has contributed a cairo and a gtkcairo backend - cairographics. 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 Cairo backend for details and install instructions"""), ('ipython integration', """\ Fernando has continued his excellent work integrating matplotlib with ipython 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
   >>> 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-helpful
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 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/ 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  : markersize
Thus 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.pylab.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/pcolor_demo2.py
see 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', """\ """), ) ################################################################################ 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 interactive documentation. 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 TkAgg backend. To use the TkAgg backend, you must launch your scripts in interactive mode python -i myscript.py -dTkAgg; otherwise they'll just pop up and disappear.""" ), ('GTKAgg', """GTK widgets with antigrain rendering. See the GTKAgg backend.""" ), ('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 BaKoMa TeX Computer Modern fonts, and displays math text using TeX expressions. See screenshot and the mathtext 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 .matplotlibrc for an example configuration file. Place this in your home dir (linux and friends), or edit in the install path (windows). See the faqs matplotlibrc and overriding defaults. """), ('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 numerix module for more information and numarray issues 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 .matplotlibrc or set it to be true when needed as in stock_demo.py """), ('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:
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', """\ """ ), ) ############################################################################# versioninfo['0.50'] = ( ('Antigrain backend: Agg', """Adding to the growing list of image backends is Antigrain. 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 The Agg Backend """ ), ('Paint/libart backend', """David Moore wrote a backend for pypaint, a libart 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 The Paint Backend for more information and install instructions""" ), ('The Matplotlib FAQ', '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 screenshot for an example of alpha at work."""), ('Table class added', """John Gill has developed a very nice Table class and table function that plays well with bar charts and stacked bar charts. See example code and screenshot table_demo."""), ('new plot commands cla and clf', """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 legend_demo.py""" ), ('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 installing the GD backend.""" ), ('GD supports clipping and antialiased line drawing', """\ See instructions about upgrading gd and gdmodule at Installing the GD backend. 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 set(lines, 'antialiased', False) 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 bar command to determine where the bottom of each bar is, default 0 for all. This enables stacked bar plots and candelstick plots -- examples/bar_stacked.py. Thanks to David Moore and John Gill for suggestions and code. """), ('Figure backend refactored', """\ The figure functionality was split into a backend independent component Figure and a backend dependent component FigureCanvasBase. This completes the transition to a totally abstract figure interface and improves the ability the switch backends and a figure to multiple backends. See API_CHANGES for information on migrating applications to the new API."""), ('Bugfixes and optimizations', """\ """), ) ######################################################################## 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/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 wxpython. See backend_wx for a status report on what's working and what the outstanding issues are."""), ('New plotting functions', """ Several new plotting functions are added. psd plots the power spectral density of a time series, csd plots the cross spectral density of two time series, and cohere plots the coherence. See the examples psd_demo.py and csd_demo.py """), ('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 legend_demo and barchart_demo. """), ('Expanded errorbar capabilities', """ Gary Ruben contributed some code to support x and y errorbars, either symmetric or asymmetric. See errorbar_demo.py for examples of all the wild and wonderful errorbar styles. Bar charts can now also display errorbars; see barchart_demo """), ('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 transform module docs for more info. See text 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 wxpython. 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 python yourscript.py -dWX and please report any bugs not listed in the KNOWN BUGS section of the wx src to the matplotlib-devel mailing list. """), ('Pseudo color plots', """ The pcolor command generates pseudo color plots. See pcolor_demo and mri_with_eeg for screenshots and pcolor_demo.py 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 semilogx, semilogy, and loglog, and a new demo log_demo.py """), ) ############################################################################## 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 interactive2.py in the new src release. """), ('Figure legends', """A matlab compatible legend command has been added. See legend_demo.py """), ('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 color_demo.py """), ) ############################################################################## 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 output formats. """), ('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 interactive2.py. 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 color_demo.py """), ('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 figtext.py """), ('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 system_monitor.py 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 text tutorial. """), ('Multiple figures', """ Multiple figures supported with the figure command. See the Working with multiple figures and axes. """), ('Interactive shell', """ Interactive use from the python shell if you have pygtk compiled with threads. See Using matplotlib interactively. """), ('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 savefig 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 Navigation tutorial. """), ('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 Patch class added for drawing patches (rectangles, polygons, circles). This supports three new plotting commands scatter, hist and bar, with more to come. """), ('New commands', """ New plotting commands bar, close, errorbar, figure, hist, text, scatter, savefig, ylabel. """), ('Matplotlib on sourceforge', """ matplotlib homepage moved to sourceforge with a (hopefully) more useful homepage. """), ('Documentation', """ Much better documentation and a tutorial. """), ('Refactoring', """ Substantial rewrite of class library. All text now handled by the AxisText class in text.py. Axis handling refactored into dedicated class Axis 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:

What's new in matplotlib @version@

+ for title, description in items:

@title@

@description@
- - @footer@