# 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 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 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 matplotlib-0.54 ******************* 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 r"Rate constant $5\lambda$" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 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. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Plot types ******************* Image support done AGG support appeared in matplotlib-0.52, Postscript image support in matplotlib-0.53. See imshow ******************* Polar plots work underway ******************* Shared axes not started Although it is now possible to have multiple plots share a common axis, this work would make it easier to create such plots. ******************* Contour plots work in progress ******************* Log histogram not started ******************* 2-D vector plots 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 not started ******************* 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 not started ******************* Map Projections some preliminary work Support standard map projections (e.g., Mercator) as well as allowing user-defined 2-D coordinate mappings. Jeffrey Whittaker has been working on a cartographic project module for use with matplotlib. See the plotmap demo. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Axis autoranging and tick customization ******************* Error bars included in auto ranging done Plots often clip error bars; fixed in matplotlib-0.54. =========================================================================== GUI Functionality ******************* Generalized event handling framework partly 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 mpl_connect and mpl_disconnect methods. See, for example, coords_demo.py. ******************* 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. ******************** 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 not started Provide a guide to users as to what parts of matplotlib should not change and what parts may still change. ============================================================================ User Interface ******************* Use of Traits package uncertain 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 not started ******************* SVG backend almost done Jared Wahlstrand wrote the SVG backend. As of matplotlib-0.61 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