From: John H. <jdh...@ac...> - 2004-05-20 14:26:11
|
What's new in matplotlib 0.54 ============================= I've done a lot of rewriting of the core of matplotlib to support some new features - mainly fast handling of polygon collections (pcolor and scatter) and since the changes were pervasive, I took to opportunity to fix some things that were bugging me about the design of matplotlib. If you use the API, creating your own Axes, Subplots, Lines, Rectangles, Texts, or working directly with transforms and bboxes, you will need to upgrade your code, since the constructors of all these objects have been simplified. The major changes affecting users of the matlab interface are for pcolor and scatter. These changes and others are detailed below and in http://matplotlib.sf.net/API_CHANGES. Sorry for the pain - in the long run, the new design is much cleaner and easier to work with, and as far as I can see, will be stable. 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 http://matplotlib.sf.net/matplotlib.transforms.html. More efficient pcolor --------------------- pcolor is now implemented with matplotlib.collections. polygon collections which should provide significantly faster performance across backends. The return value from pcolor is now a PolyColleciton object rather than a list of patches, but the API is largely compatible. See http://matplotlib.sf.net/API_CHANGES. The old function pcolor_classic is retained for full backward compatibility. New scatter plots ----------------- The http://matplotlib.sf.net/matplotlib.matlab.html#-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 See http://matplotlib.sf.net/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 http://matplotlib.sf.net/matplotlib.matlab.html#-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 http://matplotlib.sf.net/examples/multiline.py and http://matplotlib.sf.net/screenshots.html#align_text. 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 http://matplotlib.sf.net/examples/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 http://matplotlib.sf.net/examples/alignment_test.py Added stem plotting command --------------------------- See http://matplotlib.sf.net/matplotlib.matlab.html#-stem and http://matplotlib.sf.net/examples/stem_plot.py Bug fix roundup --------------- 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. See http://matplotlib.sf.net/CHANGELOG for details. Downloads at http://sourceforge.net/projects/matplotlib |