New release
matplotlib 0.98.3 is a major release which requires python2.4 or 2.5 and numpy 1.1. It contains significant improvements and may require some advanced users to update their code; see migration and API_CHANGES. We are supporting a maintenance branch of the older code available at matplotlib 0.91.4. Basemap users see basemap-readme for upgrade instructions

Donate
Help support matplotlib development by donating to fund developer sprints and other matplotlib development costs.

Matplotlib
Home
What's New
Download
Installing
Screenshots
Examples (zip)
Mailing lists
Donate

Documentation
Tutorial
User's Guide 
API tutorial
Event handling
API Reference
FAQ
Cookbook / wiki
pylab interface
Class library
Backends
Toolkits
Fonts
Interactive
Goals

Other
Credits
License

  

What's new in matplotlib 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 barbs_demo.py

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 griddata 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
module://my_backend
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, ef to find all text instances in a figure. See fondobj_demo.py

tons of bug fixes

Many critical bugfixes affecting memory leaks, math rendering, UI specific problems and more. For details, see the CHANGELOG

What's new in matplotlib 0.98.2

saving transparent figures

savefig now supports a transparent 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 mathtext_asarray.py

bug fixes and minor enhancements

lots of bug fixes and feature enhancements: dpi scaling problems, better support for relative font sizes, patch collections, better pie chart label alignment, better baseline text alignment support, support for image downsampling, more better hist functionality, image rendering fixes...

What's new in matplotlib 0.98.0

better transformations

In what has been described as open-heart surgery on matplotlib, Michael Droettboom, supported by STScI, has rewritten the transformation infrastructure from the ground up, which not only makes the code more intuitive, it supports custom user projections and scales. See adding a new projection and the transforms module documentation

proper paths

For the first time, matplotlib supports spline paths across backends, so you can pretty much draw anything. See the path_patch_demo screenshot . Thanks again to Michael Droettboom and STScI

histogram enhancements

hist can handle 2D arrays and create side-by-side or stacked histograms, as well as cumulative filled and unfilled histograms; see histogram_demo_extended.py

ginput function

ginput is a blocking function for interactive use to get input from the user. A long requested feature submitted by Gael Varoquaux. See ginput_demo.py

image optimizations

enhancements to speed up color mapping and panning and zooming on dense images

better savefig

savefig now supports save to file handles (great for web app servers) or unicode filenames on all backends

record array functions

some more helper functions to facilitate work with record arrays: rec_groupby, rec2txt, rec_summarize

accurate elliptical arcs

In support of the Phoenix mission to Mars, which used matplotlib in ground tracking of the spacecraft, Michael Droettboom built on work by Charlie Moad to provide an extremely accurate 8-spline approximation to elliptical arcs in the viewport. This provides a scale free, accurate graph of the arc regardless of zoom level. See ellipse_demo screenshot.

imread enhanced

imread now will use PIL when available to load images and return numpy arrays

postscript enhancements

the postscript backend has clipping to paths (useful for polar plots)

PDF enhancements

The PDF backend handles composite glyphs properly, usetex fixes

SVG enhancements

clip to path (useful for polar plots), inkscape cut-and-paste fixes.

QT enhancements

Fixed a duplicate draw bug that slowed performance. Native qt toolbars and status bars used for the toolbar controls.

What's new in matplotlib 0.91.2

enhanced mathtext

Complete revamp of matplotlib's internal math layout and rendering engine. Michael Droettboom has improved the TeX parser to significantly expand it's coverage, and implemented Knuth's box layout algorithms. Additionally, the much anticipated STIX fonts for math expressions have come online and ship with matplotlib. See a sample of the new mathtext at mathtext_examples.

better configuration

Darren Dale has provided support for a site.cfg configuration file to enable users and package maintainers to have better control over the matplotlib build process. He has also provided a (currently optional) enthought.traits enabled property configuration to replace matplotlib's rc configuration using a maplotlib.conf file

writing to file-like objects

You can now pass file like objects (eg StringIO) to all backends for hardcopy. This has been a much requested feature for usage in web application servers.

record array support

New functions for loading, displaying and saving numpy record arrays in matplotlib.mlab. See for example, loadrec.py

pyplot

Added a module matplotlib.pyplot which has all of pylab's plotting functions (eg figure, plot, show, close) but does not import the numpy namespace. This is useful for those who want to use the pylab functionality w/o the namespace clutter.

maskedarray

Added optional support for the scipy sandbox masked array packaged. Configurable with an rc setting.

plotfile

Added new pylab/pyplot command plotfile for gnuplot style file plotting

tons of bugfixes and minor enhancements

See the CHANGELOG and API_CHANGES for details.

What's new in matplotlib 0.90.1

unicode support for latex

Added LaTeX unicode support. Enable with the 'text.latex.unicode' rcParam. This requires the ucs and inputenc LaTeX packages.

polar enhancements

Fixed some problems with polar -- added general polygon clipping to clip the lines a nd grids to the polar axes. Added support for set_rmax to easily change the maximum radial grid. Added support for polar legend

heler function for date plots

Added Figure.autofmt_xdate to handle adjusting the bottom and rotating the tick labels for date plots when the ticks often overlap

grayscale colors now strings

Removed deprecated support for a float value as a gray-scale; now it must be a string, like '0.5'. Added alpha kwarg to ColorConverter.to_rgba_list.

enhanced xcorr and acorr

Some more niceties for xcorr -- a maxlags option, normed now works for xcorr as well as axorr, usevlines is supported, and a zero correlation hline is added. See xcorr_demo.py

performance boost to hlines and vlines

Axes.vlines and Axes.hlines now create and returns a LineCollection, not a list of lines. This is much faster. The kwarg signature has changed, so consult the docs. Modified Axes.errorbar which uses vlines and hlines. See API_CHANGES; the return signature for these three functions is now different

mpl using setuptools

Require setuptools for Python 2.3

wx blit enhancements

The backend has been updated to use new wxPython functionality to provide fast blit() animation without the C++ accelerator. This requires wxPython 2.8 or later. Previous versions of wxPython can use the C++ acclerator or the old pure Python routines.

better pdf font handling

Lots of pdf font enhancements -- see the CHANGELOG.

new picker API

Better support for interactive object picking. ; see pick_event_demo.py

subplot labeling convience functions

Added "Subplot.label_outer" method. It will set the visibility of the ticklabels so that yticklabels are only visible in the first column and xticklabels are only visible in the last row

documnetation updates

Added additional kwarg documentation

specgram updates

Added Tim Leslie's spectral patch

tick formatting updates

Added rc param 'axes.formatter.limits' to control the default threshold for switching to scientific notation. Added convenience method Axes.ticklabel_format() for turning scientific notation on or off on either or both axes. Added ability to turn control scientific notation in ScalarFormatter

sparse matrix visualization enhancements

Replaced spy and spy2 with the new spy that combines marker and image capabilities

betterm Matlab compatibility in plot argument handling

Added support for plotting 2-D arrays with plot: columns are plotted as in Matlab

pcolor now supports vectors

Made pcolor support vector X and/or Y instead of requiring 2-D arrays.

logarithmic color scaling

Added LogNorm to colors.py as illustrated by pcolor_log.py, based on suggestion by Jim McDonald. Colorbar modified to handle LogNorm. Norms have additional "inverse" method.

clipped line demo

Added clippedline.py, which shows how to clip line data based on view limits -- it also changes the marker style when zoomed in.

deprecated some old plot functions

Removed obsolete scatter_classic, leaving a stub to raise NotImplementedError; same for pcolor_classic

new broken bar plot function

Added broken_barh function for makring a sequence of horizontal bars broken by gaps -- see broken_barh.py

annotation enhancements

Removed lineprops and markerprops from the Annotation code and replaced them with an arrow configurable with kwarg arrowprops. See annotation_demo.py

What's new in matplotlib 0.87.5

aspect handling

Excellent support for axes aspect handling, with aspect='equal' or aspect=1.5 or aspect='norm' passed to an Axes or Subplot

lasso tool

Use a lasso tool for picking points -- see lasso demo

true ellipses

Earlier versions of matplotlib used a polygon approximation to ellipses. With this release we have arcs supporting scale free ellipses and circles. See ellipse demo.py

pdf backend

A alpha release of the PDF backend

quiver2

Better support for quiver / direction field plots

enhanced colorbar support

Supports discrete colorbars and more

John Porter's 3D code incorporated

\ A prototype implementation of simple 3D plots -- see simple3d_oo.py

What's new in matplotlib 0.83

axis('scale')

Added Mark Athen's 'scale' patch, so that on a scaled axis a circle looks like circle. See help(axis).

New cursor and span selector widgets

Added new Cursor and HorizontalSpanSelector to matplotlib.widgets. See cursor.py and span_selector.py. Set useblit = True on gtkagg for significantly enhanced performance.

draw events

You can use use matplotlib event handling to register a callback after figure draw using 'draw_event' which calls the callback with a DrawEvent instance
  def callback(event):
     #event.renderer is the backend Renderer instance
     pass
  connect('draw_event')

Full screen mode in GTK*

Use 'f' to toggle full screen mode in the GTK backends.

GTK and SVG fixes

Steve Chaplin has made numerous updates to the GTK and SVG backends. See the CHANGELOG for details.

Reorganized config files

Made HOME/.matplotlib the new config dir where the matplotlibrc file, the ttf.cache, and the tex.cache live. The new default filenames in .matplotlib have no leading dot and are not hidden. Eg, the new names are matplotlibrc, tex.cache, and ttffont.cache. This is how ipython does it so it must be right. If old files are found, a warning is issued and they are moved to the new location. Also fixed texmanager to put all files, including temp files in ~/.matplotlib/tex.cache, which allows you to usetex in non-writable dirs.

Using matplotlib.agg to draw paths

Updated agg_test.py to demonstrate curved paths and fills.

CocoaAgg

New CocoaAgg backend for native GUI on OSX, 10.3 and 10.4 compliant.

Qt enhancements

Applied Ted Drain's QtAgg patch: 1) Changed the toolbar to be a horizontal bar of push buttons instead of a QToolbar and updated the layout algorithms in the main window accordingly. This eliminates the ability to drag and drop the toolbar and detach it from the window. 2) Updated the resize algorithm in the main window to show the correct size for the plot widget as requested. This works almost correctly right now. It looks to me like the final size of the widget is off by the border of the main window but I haven't figured out a way to get that information yet. We could just add a small margin to the new size but that seems a little hacky. 3) Changed the x/y location label to be in the toolbar like the Tk backend instead of as a status line at the bottom of the widget. 4) Changed the toolbar pixmaps to use the ppm files instead of the png files. I noticed that the Tk backend buttons looked much nicer and it uses the ppm files so I switched them.

mathtext optimizations

Upgraded pyparsing and applied Paul McGuire's suggestions for speeding things up. This more than doubles the speed of mathtext in my simple tests.

Bugs fixed / small features

Applied SF patches 1242648, 1244732. Fixes SF bugs 1238412, 1231611, 1209354, subplot (2,1,1) bug,

What's new in matplotlib 0.82

Subplot configuration

All of the parameters of the subplots are now exposed at the rc,pylab and API layout. These are left, right, bottom, top, wspace and hspace which control how the subplots are placed on the screen. See SubplotParams, Figure.subplots_adjust and the pylab method subplots_adjust and subplots_adjust.py . Also added a GUI neutral widget for adjusting subplots, see subplot_toolbar.py. There is a new toolbar button on GTK*, WX* and TkAgg to launch the subplot configuration tool (which uses the new matplotlib cross GUI classes discussed below).

This also makes it easier to make ganged plots -- see ganged_plots.py.

Note this required a small change to how the toolbar on some GUIs are imported; if you are using the mpl API in WXAgg and GTKAgg, see API_CHANGES.

GUI neutral widgets

Matplotlib now has cross-GUI widgets (buttons, check buttons, radio buttons and sliders). You have to manually create properly sized Axes for them to live in, but otherwise they are pretty easy to use. See examples/widgets and slider_demo. This makes it easier to create interactive figures that run across backends.

Cap and join style

Exposes line cap and join style via new rc params and Line2D properties
    lines.dash_joinstyle : miter        # miter|round|bevel
    lines.dash_capstyle : butt          # butt|round|projecting
    lines.solid_joinstyle : miter       # miter|round|bevel
    lines.solid_capstyle : projecting   # butt|round|projecting

Axes kwargs

All Axes properties are now exposed via kwargs, so you can do, for example
  subplot(111, xlabel='time', ylabel='volts', autoscale_on=False,
         xlim=(-1,1), ylim =(0,10) )

Small bugfixes and features

Fixed a upper/right tick bug (thanks Baptiste), fixed invalid rc docstring vis-a-vis aliases, fixed bug #1217637 in ticker.py and a cleanup bug in usetex (thanks Darren), added Sean Richards hist bin fix (see API_CHANGES)

What's new in matplotlib 0.81

TeX support

Now you can (optionally) use TeX to handle *all* of the text elements in your figure with the rc param text.usetex (*Agg and PS only). PS support requires tex, dvips and Ghostscript 8.51 (older versions do not work properly -- test your version with gs --version). Agg support requires tex and dvipng. A directory ~/.tex.cache is created where support files are cached for later reuse. We opted to ues TeX rather than LaTeX because it is faster and can do all the things we thought useful for figure text snippets. See tex demo screenshot and texmanager. Special thanks to Darren Dale for lots of hair-pulling work customizing, enhancing and debugging the ps backend for LaTeX support.

Masked arrays

Support for masked arrays in line plots, pcolor and contours. There are some problems with filled contours and masked arrays. Thanks Eric Firing and Jeffrey Whitaker. Note that the levels argument to the contour functions has changes slightly. See API_CHANGES.

Byte images

Much faster image loading for MxNx4 or MxNx3 UInt8 images, which bypasses the memory and CPU intensive integer/floating point conversions. Thanks Nicolas Girard.

New image interpolation options

New values for the interp kwarg are:'nearest', 'bilinear', 'bicubic', 'spline16', 'spline36', 'hanning', 'hamming', 'hermite', 'kaiser', 'quadric', 'catrom', 'gaussian', 'bessel', 'mitchell', 'sinc', 'lanczos', 'blackman'. See help(imshow) for details, particularly the interpolation, filternorm and filterrad kwargs.

Text and dashes

Daishi Harada contributed a patch for connecting text to points with lines. See dashpointlabel.py and dashtick.py

Fast markers on win32

The marker cache optimization is finally available for win32, after an agg bug was found and fixed (thanks Maxim!). Line marker plots should be considerably faster now on win32. The original optimization announcement is here.

set deprecated

set clashes with the python2.4 builtin set. Use setp and getp instead (get still works but I added getp for consistency). A simple conversion script to recursive replace uses of set and get with setp and getp is provided in set_begone.py. Use with caution.

Qt in ipython/pylab

You can now use qt in ipython pylab mode. Thanks Fernando Perez and the brainvisa Orsay team

agg wrapper

Started work on a proper agg wrapper to expose more general agg functionality in mpl. See agg_test.py. Lots of wrapping remains to be done.

New scalar formatter

Darren Dale did a lot of work to make scalar formatting smarter in pathalogical cases. See newscalarformatter_demo.py.

Small features

linewidth and faceted kwargs to scatter to control edgewidth and color, autolegending now inspects line segments in addition to vertices, upgraded to agg23, new example showing how to use line collections line_collection.py, fixed antialiased property setting in agg, added a postscript papersize rc option ps.papersize, added an example showing how to embed mpl in a qt app embedding_in_qt.py, arrow keys now exposed in mpl's GUI neutral event handling, added"among" kwarg to axes picker function to limit picks, added autoscale_on property to Axes to control whether or not autoscaling is done.

Bug fixes

Fixed a contour masked array bug, contour memory leak.

What's new in matplotlib 0.73

new contour functionality

Filled contours (polygons) with contourf and clabel . See contour_demo.py, contour_image.py and this screenshot. Thanks Nadia and Eric for lots of hard work. This code is not perfect, so please let us know if you find bugs or problems.

native font support back in PS

Added new rc param param ps.useafm so ps backend can use native fonts; this currently breaks mathtext but makes for smaller files

colorbar now a figure method

Refactored colorbar code out of pylab into Figure API for API developers. < a href=matplotlib.pyplot.html#-colorbar>pylab.colorbar is now a thin wrapper to this function.

minor enhancements and bug-fixes

Experimental support for GTK w/o double buffering, added double buffering to gtkagg, exposed some core agg functionality in matplotlib.agg, upgraded wrapper generator to CXX 5.3.1, added a custom pixel transfer function for GTK which works for Numeric and numarray, added patch for problem with Japanse fonts in windows registry, fixed ticks for horizontal colorbars

What's new in matplotlib 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

What's new in matplotlib 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, reve, \grave, ar, cute, ilde, ec, \dot, \ddot. All of them have the same syntax, eg to make an overbar you do ar{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 m{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.

What's new in matplotlib 0.70

Users guide

Though still not complete, there's enough to be useful -- users_guide.pdf.

pie charts

See pie screenshot.

object picking

Support for object picking - see examples/picker_demo.py. As people test this out and we settle on an interface, this will probably become part of the core, as will other keypress functionality for navigation, grid toogle, zoom toggle etc.

wx/wxagg coords notification

The wx toolbar now reports the x,y coords of the mouse

key events

Key press and release event supported across backends -- see keypress_demo.py.

shadow effect

Shadow patch class provides a shadow effect for polygons, legends, pie charts - eg, legend screenshot.

text rotation example

New examples/pylab_examples/text_rotation.py demonstrates how text rotations and alignment work in matplotlib.

Bug fix roundup

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

What's new in matplotlib 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

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

What's new in matplotlib 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

What's new in matplotlib 0.63

image interpolation

image interpolation works properly. I think I have finally and for real this time fixed the image interpolation / edge effect bug. It turns out there was a bug in antigrain (very unusual!) that was just found, fixed, and released. I've incorporated the latest release into matplotlib, and after talking with the Maxim implemented a solution in matplotlib which fixes the edge problem w/o the view lim hack used previously. Basically, I pad the edges of the input image. This is described in more detail in the new image_interp.py. There is still an occasional off by 1 rounding problem that causes a 1 pixel error (this is independent of the interpolation/edge bug).

new dates handling

The dates handling is rewritten from the ground up, and now requires python2.3. It makes extensive use of dateutil for date ticking. All of your old date code will break, but it's an easy port. In particular, note that the date tick location constructors now have a different meaning. See API_CHANGES, matplotlib.dates, the updated date demos in examples/pylab_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.

What's new in matplotlib 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

What's new in matplotlib 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

What's new in matplotlib 0.60

figure images

pixel-by-pixel, not resampled, images with the figimage command. Multiple figure images (ie mosaics) with alpha blending are supported. See figimage_demo.py

multiple axes images with imshow

You can compose multiple axes images with alpha blending. See screenshot layer_images

unified color limit and color mapping arguments

pcolor, scatter, imshow and figimage now have the same color map and scaling arguments. Interactive control of colormap and color scaling with new matplotlib.matlab commands jet, gray and clim. New matplotlib rc parameters for default image params

image origin can be upper or lower

see image_origin.py

support for py2exe

see py2exe_examples.zip

new matplotlib.matlab command rc

Use rc for dynamic control of rc parameters. See matplotlib.pyplot.html#-rc and example customize_rc.py

draw command

new draw command to redraw the figure - use this in place of multiple calls to show. This is equivalent to doing get_current_fig_manager().canvas.draw(), but takes less typing :-)

Elaborate finance demo

New finance demo shows off may of the features of matplotlib - see screenshot at finance_work2

dynamic image demo

Andrew Straw submitted a dynamic_image example. The wx version is still in progree and has some flicker problems, but the gtk version is pretty cool - dynamic_image_gtkagg.py

Bug fixes

dynamic_demo_wx, figure legends, memory leaks, axis scaling bug related to singleton plots

What's new in matplotlib 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

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.

What's new in matplotlib 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.

What's new in matplotlib 0.52

Image support

Basic image support. Images can be specified by Numeric float arrays
     imshow(X)
     If X is MxN, assume luminance (grayscale)
     If X is MxNx3, assume RGB
     If X is MxNx4, assume RGBA

     imshow(X, cmap)  # plot X using colormap; see examples/pylab_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

  • Tk : Fixed a close figure bug in interactive mode
  • GTK : Much improved mathtext performance thanks to patch by Trevor Blackwell
  • All : Fixed a bug that showed up in successive calls to plot with just one plot argument

What's new in matplotlib 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

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

What's new in matplotlib 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 -- 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

  • All : the yticks on the right hand side were placed incorrectly, now fixed
  • All : Exposed all Figure construc attributes (figsize, dpi, facecolor, edgecolor) to matlab interface
  • All : ticklabels now make a more intelligent choice about how many significant digits to display
  • GD : An int truncation bug was causing the dotted lines to disappear
  • GD and GTK : Fixed line width to scale with DPI
  • GTK and WX : Lazy import of backend_ps for backend switching improves startup time
  • GD, GTK and PS : Fixed minor text layout problems
  • 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
  • GTK : Dash spacing was not properly scaling with DPI
  • GTK : Rotated text did not display correctly in some cases
  • 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 bugzilla which was causing repeat calls to draw() to leak memory.
  • GTK on win32. Fixed a problem where pygtk couldn't find Times. See FAQ entry GTK/Win32 font problem.
  • Fixed some bugs and added some features that make wx and gtk work better interactively from a python shell

What's new in matplotlib 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...

What's new in matplotlib 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.

What's new in matplotlib 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).

What's new in matplotlib 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

What's new in matplotlib 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

What's new in matplotlib 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

What's new in matplotlib 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


What's new in matplotlib 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.

What's new in matplotlib 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.

Powered by
YAPTU!
Matlab® is a registered trademark of The MathWorks