# 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.