# 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 <a
href="whats_new.html#0.81-TeX_support">matplotlib-0.81</a>, support
was added for using TeX to render all tex in a figure, with support in
the antigrain and postscript backends. See <a
href=screenshots.html#tex_demo>tex demo</a> and <a
href=matplotlib.texmanager.html>texmanager</a>.
*******************
Support special symbols
mostly done
Many of the standard TeX symbols are already defined (see <a
href=matplotlib.mathtext.html>mathtext</a>). 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 <a href="whats_new.html#0.54-Enhanced_mathtext">matplotlib-0.54</a>.
*******************
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 <a
href="whats_new.html#0.54-Enhanced_mathtext">matplotlib-0.54</a>
*******************
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
not started
*******************
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 <a
href="whats_new.html#0.54-Enhanced_mathtext">matplotlib-0.54</a>
*******************
embedded mathtext
not started
Currently a string is all mathtext or None. To get roman fonts in a
mathtext string you can use \rm. Ideally, we could embed mathtext
expressions in a regular string, ie, strings like <tt>r"Rate constant
$5\lambda$"</tt>. Note if you use the text.usetex rc option, then
arbitrary TeX/LaTeX expressions can be used
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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 <a href="whats_new.html#0.54-Newlines_in_text">matplotlib-0.54</a>.
*******************
International / unicode support
partly done
Unicode support for the *Agg and PS backends was added in <a
href="whats_new.html#0.74-unicode">matplotlib-0.74</a>, 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
<a href="whats_new.html#0.52-Image_support">
matplotlib-0.52</a>, Postscript image support in
<a href="whats_new.html#0.53-Ported_image_support_to_numarray_and_postscript_backend">
matplotlib-0.53</a>.
See <a href="matplotlib.pylab.html#-imshow">
imshow</a>
*******************
Polar plots
done
In <a href="whats_new.html#0.64-polar_plots">matplotlib-0.64</a>, a <a
href=matplotlib.axes.html#PolarAxes>PolarAxes</a> class was added to
support plotting in polar coordinates, which is wrapped by the matlab
interface command <a href=matplotlib.pylab.html#-polar>polar</a>
command. Note you can make other kinds of plots on polar, axes, eg
scatter plots, as shown in <a
href=examples/polar_scatter.py>polar_scatter.py</a>. See <a
href=screenshots.html#polar_demo>polar screenshot</a>. Some work
remains to be done on making the navigation toolbar behave sanely wih
polar plots.
*******************
Shared axes
done
<a href="whats_new.html#0.72-shared_axes">matplotlib-0.72</a> added
the <tt>sharex</tt> and <tt>sharey</tt> keyword args to the <a
href=matplotlib.pylab.html#-axes>axes</a> and <a
href=matplotlib.pylab.html#-subplot>subplot</a> commands. See <a
href=examples/shared_axis_demo.py>shared_axis_demo.py</a>, <a
href=examples/ganged_plots.py>ganged_plots.py</a> and <a
href=examples/two_scales.py>two_scales.py</a>.
*******************
Contour plots
mostly done
A <a href=matplotlib.pylab.html#-contour>contour</a> routine was
provided in <a href="whats_new.html#0.65-contour">matplotlib-0.65</a>
. 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
not started
This will be based on agg's <a
href=http://www.antigrain.com/demo/index.html#PAGE_DEMO_scanline_boolean>scanline
boolean algebra</a>, which does not have the licensing restrictions of
the <a href=http://www.cs.man.ac.uk/aig/staff/alan/software>gpc</a>
algorithms.
*******************
2-D vector plots
mostly done
The <a href=matplotlib.pylab.html#-quiver>quiver</a> command was added
in <a href="whats_new.html#0.74-vector_fields">matplotlib-0.74</a>.
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 <a
href=whats_new.html#0.54-Full_dash_control>matplotlib-0.54</a>. See
<a href=examples/dash_control.py>dash_control.py</a>.
*******************
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). <a
href=whats_new.html#0.63-new_dates_handling>matplotlib-0.63</a>, dates
in the range of 0001-9999 are supported. See the <a
href=tutorial.html#dates>dates tutorial</a>.
*******************
Bezier curves, paths
not started
*******************
3-D visualization
some proof-of-concept work completed
Most likely based on embedding VTK functionality. Randy Heiland has
done <a href=http://sda.iu.edu/matplot.html>some basic
work</a> 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 <a href=matplotlib.pylab.html#-pie>pie</a>
command implemented in in <a
href="whats_new.html#0.70-pie_charts">matplotlib-0.70</a> . See <a
href=screenshots.html#pie_demo>pie screenshot</a>.
*******************
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 <i>basemap</i>, a cartographic project module for
use with matplotlib. See <a href=screenshots.html#plotmap>the plotmap
demo</a> for more information.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Axis autoranging and tick customization
*******************
Error bars included in auto ranging
done
Plots often clip error bars; fixed in <a
href="whats_new.html#0.54-Bug_fix_roundup">matplotlib-0.54</a>.
*******************
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 <a
href=http://sourceforge.net/mailarchive/forum.php?thread_id=6348033&forum_id=33405>this
thread</a> 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 <a
href=matplotlib.pylab.html#-connect>connect</a> and <a
href=matplotlib.pylab.html#-disconnect>disconnect</a>
methods. See, for example, <a
href=examples/coords_demo.py>coords_demo.py</a> and <a
href=examples/keypress_demo.py>keypress_demo.py</a>
*******************
Key press event handling
mostly done
<a
href="whats_new.html#0.70-key_events">matplotlib-0.70</a> added
support for connecting to <tt>key_press_event</tt> and
<tt>key_release_event</tt> across backends, illustrated in <a
href=examples/keypress_demo.py>examples/keypress_demo.py</a>. What
remains to be done is a more sopisticated interface to handle modifier
keys as well, eg <tt>CTRL-X</tt>.
*******************
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 <a
href=examples/coords_demo.py>coords_demo.py</a> 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 <a href=http://ipython.scipy.org>ipython</a>
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 <a href="whats_new.html#0.54-Font_cacheing">matplotlib-0.54</a>
*******************
Faster point and symbol plots
mostly done
A new transformation class and <a
href=matplotlib.collections.html>collections</a> 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 <a
href="whats_new.html#0.54-New_scatter_plots">matplotlib-0.54</a>.
Line2D needs to use collections from drawing markers.
********************
Faster math text
done
Mathtext performance improved 5x in <a
href="whats_new.html#0.62-Faster-mathtext">matplotlib-0.61</a>.
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 <a
href="whats_new.html#0.54-Bug_fix_roundup">matplotlib-0.54</a>.
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
not started
*******************
SVG backend
almost done
Jared Wahlstrand wrote the SVG backend. As of <a
href="whats_new.html#0.61-svg_fixes">matplotlib-0.61</a> svg has fast
rendering, good layout, image support and font support. Remaining is
mathtext for svg.
*******************
Paint clipping problems
very low priority
The problem resides in the underlying libart package (which
sees little maintenance).
*******************
GD color allocation
very low priority