# Goals and status This file is processed by convert.py to generate
#the goals web page. Format is that goal entries in the table follow
#a line that contains only asterisks; first block is the description
#of the goal (should be brief as possible; second block is the
#status--it is recommended that goals recently finished say Done
#(release number with a link to the release notes for that release for
#the details); the third block is for any comments or associated
#information. The blocks are separated by blank lines. Blocks 2 and 3
#are optional. lines starting with # are ignored.
==========================================================================
Plot Functionality
###################
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Math text
*******************
Support TeX/LaTeX rendering
mostly done
Although matplotlib has it's own mathematical rendering engine of TeX
expressions, it cannpt compete with true TeX rendering. In matplotlib-0.81, support
was added for using TeX to render all tex in a figure, with support in
the antigrain and postscript backends. See tex demo and texmanager.
*******************
Support special symbols
mostly done
Many of the standard TeX symbols are already defined (see mathtext). The framework for adding
composite symbols is in place, eg \angstrom is defined. Additional
symbols will be added on as as needed bassis, so speak up! These
improvements appeared in matplotlib-0.54.
*******************
Postscript support
done
Paul Barrett has completed the port of mathtext to postscript. This
work also includes the support of arbitrary truetype fonts in PS
figures so text appears the same in agg and ps backends.
*******************
SVG support
not started
*******************
Parser fixes
mostly done
Over/under subscripts now work, recursive sub/superscipts are
supported if you do x_i_{j}, note the extra curlys; fixed in matplotlib-0.54
*******************
kerning
not started
*******************
rotation
mostly done
Jim Benson contributed a patch for vertical mathtext for *Agg, which
was ported to backend_gtk. Paul Barrett provided arbitrary rotation
of mathtext for PS
*******************
sqrt overlines
done
Arbitrary radicals at a number of different sizes can now be drawn.
*******************
add spacing commands
done
added \/ the small space command and \hspace{frac} where frac is a
space determined by a fraction of the point size; added in matplotlib-0.54
*******************
embedded mathtext
done
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Regular text
*******************
Relative font sizes
done
This will allow specification of a font size relative to
an existing font rather than in absolute terms, which will
make scaling all fonts within a plot simpler.
*******************
Newline separated text and arbitrary rotations
done
Properly aligned newline separated text works across backends. The
support for arbitrary rotations depends on whether the backend
supports arbitrary rotations (*Agg, PS, GD, Paint do; GTK and WX
support only horizontal and vertical). Added in matplotlib-0.54.
*******************
International / unicode support
partly done
Unicode support for the *Agg and PS backends was added in matplotlib-0.74, and previously
existed in the GTK and WX backends. This has only been lightly tested
with western fonts, and I expect there will be issues with other fonts
and encodings so please post problems to the users list. Still to be
done is supporting multiple font files per string and handling unicode
ttf filenames.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Plot types
*******************
Image support
done
AGG support appeared in
matplotlib-0.52, Postscript image support in
matplotlib-0.53.
See
imshow
*******************
Polar plots
done
In matplotlib-0.64, a PolarAxes class was added to
support plotting in polar coordinates, which is wrapped by the matlab
interface command polar
command. Note you can make other kinds of plots on polar, axes, eg
scatter plots, as shown in polar_scatter.py. See polar screenshot. Further
enhancements to polar plots, including rotating/zooming, are
implemented in the transforms branch.
*******************
Shared axes
done
matplotlib-0.72 added
the sharex and sharey keyword args to the axes and subplot commands. See shared_axis_demo.py, ganged_plots.py and two_scales.py.
*******************
Contour plots
mostly done
A contour routine was
provided in matplotlib-0.65
. Work on automatic labeling of contours is underway. linestyles
added in matplotlib-0.72.1. polyfilled contours are planned.
*******************
Log histogram
not started
*******************
General polygon clipping
mostly done
This will be based on agg's scanline
boolean algebra, which does not have the licensing restrictions of
the gpc
algorithms. This currently works in the Agg and Pdf backends. On the
transforms branch, it additionally works in the Cairo, Ps and Svg backends.
*******************
2-D vector plots
mostly done
The quiver command was added
in matplotlib-0.74.
This draws arrows ar position x,y with direction and magnitude given
by dx, dy. I would like to refactor this a bot to make the arrows
look nicer, and to support other modes of drawing (simple line arrows
rather than polygons, using dot-line instead of arrow), but the basic
functionality is there.
*******************
Gradient polygon fills
not started
*******************
Full dash control
done
You can set a sequence of on-off ink for dashes in addition to the
preset line styles '--' and '-.'. Added in matplotlib-0.54. See
dash_control.py.
*******************
Generalize date plots
done
Rewrote the date code to require datetime and thus support a wider
range of date intervals. Version of matplotlib < 0.63 did not require
datetime and only supported epoch dates (seconds since 1972). matplotlib-0.63, dates
in the range of 0001-9999 are supported. See the dates tutorial.
*******************
Bezier curves, paths
done on transforms branch
*******************
3-D visualization
some proof-of-concept work completed
Most likely based on embedding VTK functionality. Randy Heiland has
done some basic
work to show how to use VTK with offline rendering in combination
with matplotlib imshow to incorporate 3D but much more work is needed.
*******************
Pie Charts
done
Matlab® compatible pie
command implemented in in matplotlib-0.70 . See pie screenshot.
*******************
Map Projections
mostly done
Support standard map projections (e.g., Mercator) as well as allowing
user-defined 2-D coordinate mappings. Jeffrey Whittaker has released a
matplotlib toolkit basemap, a cartographic project module for
use with matplotlib. See the plotmap
demo for more information.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Axis autoranging and tick customization
*******************
Error bars included in auto ranging
done
Plots often clip error bars; fixed in matplotlib-0.54.
*******************
Detachable axis from main axes box and customizable tickline locations
work beginning
Currently the axis line, the and the tick lines that abut it are fixed
to the edge of the axes rectangular frame. For some plots, it is nice
to offset this line, eg for the xaxis below the rectqangluar axes
area. Also, for the ticks, it is nice to be able to place them on the
axis line either centered, with the tick inside the frame, or outside,
Currently, the only supported mode is inside, though there are hacks
to work around this, eg as described in this
thread from matplotlib-users. Andrew Straw is looking at this.
===========================================================================
GUI Functionality
*******************
Generalized event handling framework
mostly done
Provide a standard event handling framework that works with all GUI
back-ends. Some basic event handling, GUI neutral, event handling is
implemented with the connect and disconnect
methods. See, for example, coords_demo.py and keypress_demo.py
*******************
Key press event handling
mostly done
matplotlib-0.70 added
support for connecting to key_press_event and
key_release_event across backends, illustrated in examples/keypress_demo.py. What
remains to be done is a more sopisticated interface to handle modifier
keys as well, eg CTRL-X.
*******************
Cursor read function
95% done
Provide a standard function for reading cursor position from a program
either immeditately or based on a specified event (e.g., keypress or
mouse button). The example coords_demo.py shows you how to use
GUI callbacks to get the x and y mouse coordinates in display and data
units with the GTK and Tk backend. Yet to be added is a blocking
function, like x, y = mouse_press(*args)
********************
Solve mainloop issues
some progress
The ultimate goal is to have matplotlib work across IDEs and standard
python shells. Fernando Perez helped with an important first step, in
releasing a version of ipython
that works in interactive mode with all of the matplotlib GUIs.
============================================================================
Performance
*******************
Faster Postscript rendering
done
font caching and other changes have significantly improved postscript
performance; fixed in matplotlib-0.54
*******************
Faster point and symbol plots
mostly done
A new transformation class and collections module have
dramatically improved pcolor and scatter plots. scatter also supports
a variety of different markers - currently regular polygons but this
will soon be expanded. For large scatter plots (eg 50,000 markers),
performance is 10x faster in matplotlib-0.54.
Line2D needs to use collections from drawing markers.
********************
Faster math text
done
Mathtext performance improved 5x in matplotlib-0.61.
Thanks to Paul Mcguire for fixes both to pyparsing and to the
matplotlib grammar!
============================================================================
Documentation
*******************
Fixed and non-fixed interfaces
in progress
The users guide available on the matplotlib web site is beginning to
document the API.
============================================================================
User Interface
*******************
Use of Traits package
Under investigation
Allows validation of user-supplied plotting parameters
============================================================================
Backends
*******************
Various WX improvements and fixes
mostly done
Jeremy fixed the known wx bugs relating to tooltips and the close
button button not returning the interpreter in matplotlib-0.54.
Jeremy, the author and maintainer of the wx backend, no longer has the
time to fully maintain the wx backend, though he continues to work on
it. So we are looking for someone to help maintain the wx and wxagg
backends.
*******************
PDF backend
mostly complete
*******************
SVG backend
mostly complete
Jared Wahlstrand wrote the SVG backend. As of matplotlib-0.91 svg has fast
rendering, good layout, image support, font support and mathtext
support. Support for clipping paths is available on the transforms
branch.