From: <md...@us...> - 2008-11-19 14:45:51
|
Revision: 6415 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6415&view=rev Author: mdboom Date: 2008-11-19 14:45:44 +0000 (Wed, 19 Nov 2008) Log Message: ----------- Converted API_CHANGES to reST and included it in the documentation tree. Modified Paths: -------------- trunk/matplotlib/doc/api/index.rst Added Paths: ----------- trunk/matplotlib/doc/api/api_changes.rst Removed Paths: ------------- trunk/matplotlib/API_CHANGES Deleted: trunk/matplotlib/API_CHANGES =================================================================== --- trunk/matplotlib/API_CHANGES 2008-11-18 23:38:53 UTC (rev 6414) +++ trunk/matplotlib/API_CHANGES 2008-11-19 14:45:44 UTC (rev 6415) @@ -1,1310 +0,0 @@ -Changes for 0.98.x -================== - -* set_xlim, ylim now return a copy of the viewlim array to - avoid modify inplace surprises - -* AFM.get_fullname() and get_familyname() no longer raise an - exception if the AFM file does not specify these optional attributes, - but returns a guess based on the required FontName attribute. - -* Changed precision kwarg in spy; default is 0, and the string value - 'present' is used for sparse arrays only to show filled locations. - -* EllipseCollection added. - -* Added angles kwarg to quiver for more flexible specification of - the arrow angles. - -* Deprecated (raise NotImplementedError) all the mlab2 functions from - matplotlib.mlab out of concern that some of them were not clean room - implementations. - -* Methods get_offsets and set_offsets added to Collections base - class. - -* Figure.figurePatch renamed Figure.patch, Axes.axesPatch renamed - Axes.patch, Axes.axesFrame renamed Axes.frame, Axes.get_frame, which - returns Axes.patch, is deprecated. Examples and users guide updated - -* Changes in the ContourLabeler attributes (clabel function) so that they - all have a form like .labelAttribute. The three attributes that are most - likely to be used by end users, .cl, .cl_xy and .cl_cvalues have been - maintained for the moment (in addition to their renamed versions), but they - are depricated and will eventually be removed. - -* Moved several function in mlab.py and cbook.py into a separate module - numerical_methods.py because they were unrelated to the initial purpose of - mlab or cbook and appeared more coherent elsewhere. - -Changes for 0.98.1 -================== - -* Removed broken axes3d support and replaced it with a non implemented - error pointing to 0.91.x - -Changes for 0.98.0 -================== - - matplotlib.image.imread now no longer always returns RGBA -- if - the image is luminance or RGB, it will return a MxN or MxNx3 array - if possible. Also uint8 is no longer always forced to float. - - Rewrote the cm.ScalarMappable callback infrastructure to use - cbook.CallbackRegistry rather than custom callback handling. Amy - users of add_observer/notify of the cm.ScalarMappable should uae - the cm.ScalarMappable.callbacksSM CallbackRegistry instead. - - New axes function and Axes method provide control over the plot - color cycle: axes.set_default_color_cycle(clist) and - Axes.set_color_cycle(clist). - - matplotlib now requires python2.4, so matplotlib.cbook will no - loner provide set, enumerate, reversed or izip compatability functions - - In numpy 1.0 bins are specified by the left edges only. The axes - method "hist" now uses future numpy 1.3 semantic for histograms. - Providing binedges, the last value gives the upper-right edge now, - which was implicitly set to +infinity in numpy 1.0. This also means - that the last bin doesn't contain upper outliers any more by default. - - New axes method and pyplot function, hexbin, is an alternative - to scatter for large datasets. It makes something like a - pcolor of a 2-D histogram, but uses hexagonal bins. - - New kwarg, "symmetric", in MaxNLocator - allows one require an axis to be centered on zero. - - toolkits must now be imported from mpl_toolkits (not matplotlib.toolkits) - -TRANSFORMS REFACTORING - - The primary goal of this refactoring was to make it easier to - extend matplotlib to support new kinds of projections. This is - primarily an internal improvement, and the possible user-visible - changes it allows are yet to come. - - See transforms.py for a description of the design of the new - transformation framework. - - For efficiency, many of these functions return views into Numpy - arrays. This means that if you hold on to a reference to them, - their contents may change. If you want to store a snapshot of - their current values, use the Numpy array method copy(). - - The view intervals are now stored only in one place -- in the Axes - instance, not in the formatter instances as well. This means - formatters must get their limits from their Axis, which in turn - looks up its limits from the Axes. If a Locator is used - temporarily and not assigned to an Axis or Axes, (e.g. in - contour.py), a dummy axis must be created to store its bounds. - Call Locator.create_dummy_axis() to do so. - - The functionality of Pbox has been merged with Bbox. Its methods - now all return copies rather than modifying in place. - - The following lists many of the simple changes necessary to update - code from the old transformation framework to the new one. In - particular, methods that return a copy are named with a verb in - the past tense, whereas methods that alter an object in place are - named with a very in the present tense. - - transforms.py - Bbox.get_bounds() Bbox.bounds - - Bbox.width() Bbox.width - - Bbox.height() Bbox.height - - Bbox.intervalx().get_bounds() Bbox.intervalx - Bbox.intervalx().set_bounds() - [Bbox.intervalx is now a property.] - - Bbox.intervaly().get_bounds() Bbox.intervaly - Bbox.intervaly().set_bounds() - [Bbox.intervaly is now a property.] - - Bbox.xmin() Bbox.x0 or Bbox.xmin - Bbox.ymin() Bbox.y0 or Bbox.ymin - Bbox.xmax() Bbox.x1 or Bbox.xmax - Bbox.ymax() Bbox.y1 or Bbox.ymax - [The Bbox is bound by the points (x0, y0) to (x1, y1) and - there is no defined order to these points, that is, x0 is not - necessarily the left edge of the box. To get the left edge of - the Bbox, use the read-only property xmin.] - - Bbox.overlaps(bboxes) Bbox.count_overlaps(bboxes) - - bbox_all(bboxes) Bbox.union(bboxes) - [Bbox.union is a staticmethod.] - - lbwh_to_bbox(l, b, w, h) Bbox.from_bounds(x0, y0, w, h) - - inverse_transform_bbox(trans, bbox) bbox.inverse_transformed(trans) - - Interval.contains_open(v) interval_contains_open(tuple, v) - Interval.contains(v) interval_contains_open(tuple, v) - - identity_transform() IdentityTransform() - - blend_xy_sep_transform(xtrans, ytrans) blended_transform_factory(xtrans, ytrans) - - scale_transform(xs, ys) Affine2D().scale(xs[, ys]) - - get_bbox_transform(boxin, boxout) BboxTransform(boxin, boxout) or - BboxTransformFrom(boxin) or - BboxTransformTo(boxout) - - Transform.seq_xy_tup(points) Transform.transform(points) - - Transform.inverse_xy_tup(points) Transform.inverted().transform(points) - - axes.py - Axes.get_position() Axes.get_position() - [Axes.get_position() used to return a list of points, not it - returns a transforms.Bbox instance.] - - Axes.set_position() Axes.set_position() - [Axes.set_position() now accepts either four scalars or a - transforms Bbox instance.] - - [also returns a Bbox] - Axes.toggle_log_lineary() Axes.set_yscale() - [Since the recfactoring allows for more than two scale types - ('log' or 'linear'), it no longer makes sense to have a - toggle. Axes.toggle_log_lineary() has been removed.] - - Axes.hlines(linestyle=) Axes.hlines(linestyles=) - Axes.vlines(linestyle=) Axes.vlines(linestyles=) - [The kwarg 'linestyle' has been replaced with 'linestyles', - which accepts either a single linestyle or a list of - linestyles to use.] - - Subplot class is gone -- now there is only SubplotBase. - - The Polar class has moved to projections/polar.py - - artist.py - Artist.set_clip_path(path) Artist.set_clip_path(path, transform) - [set_clip_path now accepts a path.Path instance and a - transformation that will be applied to the path immediately - before clipping.] - - collections.py - linestyle linestyles - [Linestyles are now treated like all other collection - attributes -- a single value or multiple values may be - provided.] - - colors.py - ColorConvertor.to_rgba_list(c) ColorConvertor.to_rgba_array(c) - [ColorConvertor.to_rgba_array(c) returns an Nx4 Numpy array of - RGBA color quadruples.] - - contour.py - Contour._segments Contour.get_paths() - [Contour.get_paths() now returns a list of path.Path instances.] - - figure.py - Figure.dpi.get()/set() Figure.dpi (a property) - - patches.py - get_verts() get_path() - [Patch.get_path() returns a path.Path instance.] - - backend_bases.py - GraphicsContext.set_clip_rectangle(tuple) GraphicsContext.set_clip_rectangle(bbox) - - GraphicsContext.get_clip_path() GraphicsContext.get_clip_path() - [GraphicsContext.get_clip_path() returns a tuple of the form - (path, affine_transform), where path is a path.Path instance - and affine_transform is a transforms.Affine2D instance.] - - GraphicsContext.set_clip_path(clippath) GraphicsContext.set_clip_path(clippath) - [Now accepts only an instance of transforms.TransformedPath.] - - RendererBase class: - **new methods** ---> - draw_path(self, gc, path, transform, rgbFace) - - draw_markers(self, gc, marker_path, marker_trans, path, trans, rgbFace) - - draw_path_collection(self, master_transform, cliprect, clippath, - clippath_trans, paths, all_transforms, offsets, - offsetTrans, facecolors, edgecolors, linewidths, - linestyles, antialiaseds) [optional] - - - **changed methods** ---> - draw_image(self, x, y, im, bbox) draw_image(self, x, y, im, bbox, - clippath, clippath_trans) - - **removed methods** ---> - draw_arc - draw_line_collection - draw_line - draw_lines - draw_point - draw_quad_mesh - draw_poly_collection - draw_polygon - draw_rectangle - draw_regpoly_collection - -END OF TRANSFORMS REFACTORING - - - - -0.91.2 Released - - For csv2rec, checkrows=0 is the new default indicating all rows - will be checked for type inference - - A warning is issued when an image is drawn on log-scaled - axes, since it will not log-scale the image data. - - Moved rec2gtk to matplotlib.toolkits.gtktools - - Moved rec2excel to matplotlib.toolkits.exceltools - - Removed, dead/experimental ExampleInfo, Namespace and Importer - code from matplotlib/__init__.py - -0.91.1 Released - -0.91.0 Released - - Changed cbook.is_file_like to cbook.is_writable_file_like and - corrected behavior. - - Added ax kwarg to pyplot.colorbar and Figure.colorbar so that - one can specify the axes object from which space for the colorbar - is to be taken, if one does not want to make the colorbar axes - manually. - - Changed cbook.reversed so it yields a tuple rather than a - (index, tuple). This agrees with the python reversed builtin, - and cbook only defines reversed if python doesnt provide the - builtin. - - Made skiprows=1 the default on csv2rec - - The gd and paint backends have been deleted. - - The errorbar method and function now accept additional kwargs - so that upper and lower limits can be indicated by capping the - bar with a caret instead of a straight line segment. - - The dviread.py file now has a parser for files like psfonts.map - and pdftex.map, to map TeX font names to external files. - - The file type1font.py contains a new class for Type 1 fonts. - Currently it simply reads pfa and pfb format files and stores the - data in a way that is suitable for embedding in pdf files. In the - future the class might actually parse the font to allow e.g. - subsetting. - - FT2Font now supports FT_Attach_File. In practice this can be used - to read an afm file in addition to a pfa/pfb file, to get metrics - and kerning information for a Type 1 font. - - The AFM class now supports querying CapHeight and stem widths. The - get_name_char method now has an isord kwarg like get_width_char. - - Changed pcolor default to shading='flat'; but as noted now in the - docstring, it is preferable to simply use the edgecolor kwarg. - - The mathtext font commands (\cal, \rm, \it, \tt) now behave as TeX - does: they are in effect until the next font change command or the - end of the grouping. Therefore uses of $\cal{R}$ should be - changed to ${\cal R}$. Alternatively, you may use the new - LaTeX-style font commands (\mathcal, \mathrm, \mathit, \mathtt) - which do affect the following group, eg. $\mathcal{R}$. - - Text creation commands have a new default linespacing and - a new linespacing kwarg, which is a multiple of the maximum - vertical extent of a line of ordinary text. The default is - 1.2; linespacing=2 would be like ordinary double spacing, for - example. - - Changed default kwarg in colors.Normalize.__init__ to clip=False; - clipping silently defeats the purpose of the special over, under, - and bad values in the colormap, thereby leading to unexpected - behavior. The new default should reduce such surprises. - - Made the emit property of set_xlim and set_ylim true by default; - removed the Axes custom callback handling into a 'callbacks' - attribute which is a cbook.CallbackRegistry instance. This now - supports the xlim_changed and ylim_changed Axes events. - -0.90.1 released - - The file dviread.py has a (very limited and fragile) dvi reader - for usetex support. The API might change in the future so don't - depend on it yet. - - Removed deprecated support for a float value as a gray-scale; - now it must be a string, like '0.5'. Added alpha kwarg to - ColorConverter.to_rgba_list. - - New method set_bounds(vmin, vmax) for formatters, locators sets - the viewInterval and dataInterval from floats. - - Removed deprecated colorbar_classic. - - Line2D.get_xdata and get_ydata valid_only=False kwarg is replaced - by orig=True. When True, it returns the original data, otherwise - the processed data (masked, converted) - - Some modifications to the units interface. - units.ConversionInterface.tickers renamed to - units.ConversionInterface.axisinfo and it now returns a - units.AxisInfo object rather than a tuple. This will make it - easier to add axis info functionality (eg I added a default label - on this iteration) w/o having to change the tuple length and hence - the API of the client code everytime new functionality is added. - Also, units.ConversionInterface.convert_to_value is now simply - named units.ConversionInterface.convert. - - Axes.errorbar uses Axes.vlines and Axes.hlines to draw its error - limits int he vertical and horizontal direction. As you'll see - in the changes below, these funcs now return a LineCollection - rather than a list of lines. The new return signature for - errorbar is ylins, caplines, errorcollections where - errorcollections is a xerrcollection, yerrcollection - - Axes.vlines and Axes.hlines now create and returns a LineCollection, not a list - of lines. This is much faster. The kwarg signature has changed, - so consult the docs - - MaxNLocator accepts a new Boolean kwarg ('integer') to force - ticks to integer locations. - - Commands that pass an argument to the Text constructor or to - Text.set_text() now accept any object that can be converted - with '%s'. This affects xlabel(), title(), etc. - - Barh now takes a **kwargs dict instead of most of the old - arguments. This helps ensure that bar and barh are kept in sync, - but as a side effect you can no longer pass e.g. color as a - positional argument. - - ft2font.get_charmap() now returns a dict that maps character codes - to glyph indices (until now it was reversed) - - Moved data files into lib/matplotlib so that setuptools' develop - mode works. Re-organized the mpl-data layout so that this source - structure is maintained in the installation. (I.e. the 'fonts' and - 'images' sub-directories are maintained in site-packages.). - Suggest removing site-packages/matplotlib/mpl-data and - ~/.matplotlib/ttffont.cache before installing - -0.90.0 released - - All artists now implement a "pick" method which users should not - call. Rather, set the "picker" property of any artist you want to - pick on (the epsilon distance in points for a hit test) and - register with the "pick_event" callback. See - examples/pick_event_demo.py for details - - Bar, barh, and hist have "log" binary kwarg: log=True - sets the ordinate to a log scale. - - Boxplot can handle a list of vectors instead of just - an array, so vectors can have different lengths. - - Plot can handle 2-D x and/or y; it plots the columns. - - Added linewidth kwarg to bar and barh. - - Made the default Artist._transform None (rather than invoking - identity_transform for each artist only to have it overridden - later). Use artist.get_transform() rather than artist._transform, - even in derived classes, so that the default transform will be - created lazily as needed - - New LogNorm subclass of Normalize added to colors.py. - All Normalize subclasses have new inverse() method, and - the __call__() method has a new clip kwarg. - - Changed class names in colors.py to match convention: - normalize -> Normalize, no_norm -> NoNorm. Old names - are still available for now. - - Removed obsolete pcolor_classic command and method. - - Removed lineprops and markerprops from the Annotation code and - replaced them with an arrow configurable with kwarg arrowprops. - See examples/annotation_demo.py - JDH - -0.87.7 released - - Completely reworked the annotations API because I found the old - API cumbersome. The new design is much more legible and easy to - read. See matplotlib.text.Annotation and - examples/annotation_demo.py - - markeredgecolor and markerfacecolor cannot be configured in - matplotlibrc any more. Instead, markers are generally colored - automatically based on the color of the line, unless marker colors - are explicitely set as kwargs - NN - - Changed default comment character for load to '#' - JDH - - math_parse_s_ft2font_svg from mathtext.py & mathtext2.py now returns - width, height, svg_elements. svg_elements is an instance of Bunch ( - cmbook.py) and has the attributes svg_glyphs and svg_lines, which are both - lists. - - Renderer.draw_arc now takes an additional parameter, rotation. - It specifies to draw the artist rotated in degrees anti- - clockwise. It was added for rotated ellipses. - - Renamed Figure.set_figsize_inches to Figure.set_size_inches to - better match the get method, Figure.get_size_inches. - - Removed the copy_bbox_transform from transforms.py; added - shallowcopy methods to all transforms. All transforms already - had deepcopy methods. - - FigureManager.resize(width, height): resize the window - specified in pixels - - barh: x and y args have been renamed to width and bottom - respectively, and their order has been swapped to maintain - a (position, value) order. - - bar and barh: now accept kwarg 'edgecolor'. - - bar and barh: The left, height, width and bottom args can - now all be scalars or sequences; see docstring. - - barh: now defaults to edge aligned instead of center - aligned bars - - bar, barh and hist: Added a keyword arg 'align' that - controls between edge or center bar alignment. - - Collections: PolyCollection and LineCollection now accept - vertices or segments either in the original form [(x,y), - (x,y), ...] or as a 2D numerix array, with X as the first column - and Y as the second. Contour and quiver output the numerix - form. The transforms methods Bbox.update() and - Transformation.seq_xy_tups() now accept either form. - - Collections: LineCollection is now a ScalarMappable like - PolyCollection, etc. - - Specifying a grayscale color as a float is deprecated; use - a string instead, e.g., 0.75 -> '0.75'. - - Collections: initializers now accept any mpl color arg, or - sequence of such args; previously only a sequence of rgba - tuples was accepted. - - Colorbar: completely new version and api; see docstring. The - original version is still accessible as colorbar_classic, but - is deprecated. - - Contourf: "extend" kwarg replaces "clip_ends"; see docstring. - Masked array support added to pcolormesh. - - Modified aspect-ratio handling: - Removed aspect kwarg from imshow - Axes methods: - set_aspect(self, aspect, adjustable=None, anchor=None) - set_adjustable(self, adjustable) - set_anchor(self, anchor) - Pylab interface: - axis('image') - - Backend developers: ft2font's load_char now takes a flags - argument, which you can OR together from the LOAD_XXX - constants. - -API Changes in matplotlib-0.86 - - Matplotlib data is installed into the matplotlib module. - This is similar to package_data. This should get rid of - having to check for many possibilities in _get_data_path(). - The MATPLOTLIBDATA env key is still checked first to allow - for flexibility. - - 1) Separated the color table data from cm.py out into - a new file, _cm.py, to make it easier to find the actual - code in cm.py and to add new colormaps. Everything - from _cm.py is imported by cm.py, so the split should be - transparent. - 2) Enabled automatic generation of a colormap from - a list of colors in contour; see modified - examples/contour_demo.py. - 3) Support for imshow of a masked array, with the - ability to specify colors (or no color at all) for - masked regions, and for regions that are above or - below the normally mapped region. See - examples/image_masked.py. - 4) In support of the above, added two new classes, - ListedColormap, and no_norm, to colors.py, and modified - the Colormap class to include common functionality. Added - a clip kwarg to the normalize class. - - -API Changes in matplotlib-0.85 - - Made xtick and ytick separate props in rc - - made pos=None the default for tick formatters rather than 0 to - indicate "not supplied" - - Removed "feature" of minor ticks which prevents them from - overlapping major ticks. Often you want major and minor ticks at - the same place, and can offset the major ticks with the pad. This - could be made configurable - - Changed the internal structure of contour.py to a more OO style. - Calls to contour or contourf in axes.py or pylab.py now return - a ContourSet object which contains references to the - LineCollections or PolyCollections created by the call, - as well as the configuration variables that were used. - The ContourSet object is a "mappable" if a colormap was used. - - Added a clip_ends kwarg to contourf. From the docstring: - * clip_ends = True - If False, the limits for color scaling are set to the - minimum and maximum contour levels. - True (default) clips the scaling limits. Example: - if the contour boundaries are V = [-100, 2, 1, 0, 1, 2, 100], - then the scaling limits will be [-100, 100] if clip_ends - is False, and [-3, 3] if clip_ends is True. - Added kwargs linewidths, antialiased, and nchunk to contourf. These - are experimental; see the docstring. - - Changed Figure.colorbar(): - kw argument order changed; - if mappable arg is a non-filled ContourSet, colorbar() shows - lines instead hof polygons. - if mappable arg is a filled ContourSet with clip_ends=True, - the endpoints are not labelled, so as to give the - correct impression of open-endedness. - - Changed LineCollection.get_linewidths to get_linewidth, for - consistency. - - -API Changes in matplotlib-0.84 - - Unified argument handling between hlines and vlines. Both now - take optionally a fmt argument (as in plot) and a keyword args - that can be passed onto Line2D. - - Removed all references to "data clipping" in rc and lines.py since - these were not used and not optimized. I'm sure they'll be - resurrected later with a better implementation when needed. - - 'set' removed - no more deprecation warnings. Use 'setp' instead. - - Backend developers: Added flipud method to image and removed it - from to_str. Removed origin kwarg from backend.draw_image. - origin is handled entirely by the frontend now. - -API Changes in matplotlib-0.83 - - - Made HOME/.matplotlib the new config dir where the matplotlibrc - file, the ttf.cache, and the tex.cache live. The new default - filenames in .matplotlib have no leading dot and are not hidden. - Eg, the new names are matplotlibrc, tex.cache, and ttffont.cache. - This is how ipython does it so it must be right. - - If old files are found, a warning is issued and they are moved to - the new location. - - - backends/__init__.py no longer imports new_figure_manager, - draw_if_interactive and show from the default backend, but puts - these imports into a call to pylab_setup. Also, the Toolbar is no - longer imported from WX/WXAgg. New usage: - - from backends import pylab_setup - new_figure_manager, draw_if_interactive, show = pylab_setup() - - - Moved Figure.get_width_height() to FigureCanvasBase. It now - returns int instead of float. - -API Changes in matplotlib-0.82 - - - toolbar import change in GTKAgg, GTKCairo and WXAgg - - - Added subplot config tool to GTK* backends -- note you must now - import the NavigationToolbar2 from your backend of choice rather - than from backend_gtk because it needs to know about the backend - specific canvas -- see examples/embedding_in_gtk2.py. Ditto for - wx backend -- see examples/embedding_in_wxagg.py - - - - hist bin change - - Sean Richards notes there was a problem in the way we created - the binning for histogram, which made the last bin - underrepresented. From his post: - - I see that hist uses the linspace function to create the bins - and then uses searchsorted to put the values in their correct - bin. Thats all good but I am confused over the use of linspace - for the bin creation. I wouldn't have thought that it does - what is needed, to quote the docstring it creates a "Linear - spaced array from min to max". For it to work correctly - shouldn't the values in the bins array be the same bound for - each bin? (i.e. each value should be the lower bound of a - bin). To provide the correct bins for hist would it not be - something like - - def bins(xmin, xmax, N): - if N==1: return xmax - dx = (xmax-xmin)/N # instead of N-1 - return xmin + dx*arange(N) - - - This suggestion is implemented in 0.81. My test script with these - changes does not reveal any bias in the binning - - from matplotlib.numerix.mlab import randn, rand, zeros, Float - from matplotlib.mlab import hist, mean - - Nbins = 50 - Ntests = 200 - results = zeros((Ntests,Nbins), typecode=Float) - for i in range(Ntests): - print 'computing', i - x = rand(10000) - n, bins = hist(x, Nbins) - results[i] = n - print mean(results) - - -API CHANGES in matplotlib-0.81 - - - pylab and artist "set" functions renamed to setp to avoid clash - with python2.4 built-in set. Current version will issue a - deprecation warning which will be removed in future versions - - - imshow interpolation arguments changes for advanced interpolation - schemes. See help imshow, particularly the interpolation, - filternorm and filterrad kwargs - - - Support for masked arrays has been added to the plot command and - to the Line2D object. Only the valid points are plotted. A - "valid_only" kwarg was added to the get_xdata() and get_ydata() - methods of Line2D; by default it is False, so that the original - data arrays are returned. Setting it to True returns the plottable - points. - - - contour changes: - - Masked arrays: contour and contourf now accept masked arrays as - the variable to be contoured. Masking works correctly for - contour, but a bug remains to be fixed before it will work for - contourf. The "badmask" kwarg has been removed from both - functions. - - Level argument changes: - - Old version: a list of levels as one of the positional - arguments specified the lower bound of each filled region; the - upper bound of the last region was taken as a very large - number. Hence, it was not possible to specify that z values - between 0 and 1, for example, be filled, and that values - outside that range remain unfilled. - - New version: a list of N levels is taken as specifying the - boundaries of N-1 z ranges. Now the user has more control over - what is colored and what is not. Repeated calls to contourf - (with different colormaps or color specifications, for example) - can be used to color different ranges of z. Values of z - outside an expected range are left uncolored. - - Example: - Old: contourf(z, [0, 1, 2]) would yield 3 regions: 0-1, 1-2, and >2. - New: it would yield 2 regions: 0-1, 1-2. If the same 3 regions were - desired, the equivalent list of levels would be [0, 1, 2, - 1e38]. - - -API CHANGES in matplotlib-0.80 - - - xlim/ylim/axis always return the new limits regardless of - arguments. They now take kwargs which allow you to selectively - change the upper or lower limits while leaving unnamed limits - unchanged. See help(xlim) for example - -API CHANGES in matplotlib-0.73 - - - Removed deprecated ColormapJet and friends - - - Removed all error handling from the verbose object - - - figure num of zero is now allowed - -API CHANGES in matplotlib-0.72 - - - Line2D, Text, and Patch copy_properties renamed update_from and - moved into artist base class - - - LineCollecitons.color renamed to LineCollections.set_color for - consistency with set/get introspection mechanism, - - - pylab figure now defaults to num=None, which creates a new figure - with a guaranteed unique number - - - contour method syntax changed - now it is matlab compatible - - unchanged: contour(Z) - old: contour(Z, x=Y, y=Y) - new: contour(X, Y, Z) - - see http://matplotlib.sf.net/matplotlib.pylab.html#-contour - - - - Increased the default resolution for save command. - - - Renamed the base attribute of the ticker classes to _base to avoid conflict - with the base method. Sitt for subs - - - subs=none now does autosubbing in the tick locator. - - - New subplots that overlap old will delete the old axes. If you - do not want this behavior, use fig.add_subplot or the axes - command - -API CHANGES in matplotlib-0.71 - - Significant numerix namespace changes, introduced to resolve - namespace clashes between python built-ins and mlab names. - Refactored numerix to maintain separate modules, rather than - folding all these names into a single namespace. See the following - mailing list threads for more information and background - - http://sourceforge.net/mailarchive/forum.php?thread_id=6398890&forum_id=36187 - http://sourceforge.net/mailarchive/forum.php?thread_id=6323208&forum_id=36187 - - - OLD usage - - from matplotlib.numerix import array, mean, fft - - NEW usage - - from matplotlib.numerix import array - from matplotlib.numerix.mlab import mean - from matplotlib.numerix.fft import fft - - numerix dir structure mirrors numarray (though it is an incomplete - implementation) - - numerix - numerix/mlab - numerix/linear_algebra - numerix/fft - numerix/random_array - - but of course you can use 'numerix : Numeric' and still get the - symbols. - - pylab still imports most of the symbols from Numerix, MLab, fft, - etc, but is more cautious. For names that clash with python names - (min, max, sum), pylab keeps the builtins and provides the numeric - versions with an a* prefix, eg (amin, amax, asum) - - - -API CHANGES in matplotlib-0.70 - - MplEvent factored into a base class Event and derived classes - MouseEvent and KeyEvent - - Removed definct set_measurement in wx toolbar - -API CHANGES in matplotlib-0.65.1 - - removed add_axes and add_subplot from backend_bases. Use - figure.add_axes and add_subplot instead. The figure now manages the - current axes with gca and sca for get and set current axe. If you - have code you are porting which called, eg, figmanager.add_axes, you - can now simply do figmanager.canvas.figure.add_axes. - -API CHANGES in matplotlib-0.65 - - mpl_connect and mpl_disconnect in the matlab interface renamed to - connect and disconnect - - Did away with the text methods for angle since they were ambiguous. - fontangle could mean fontstyle (obligue, etc) or the rotation of the - text. Use style and rotation instead. - - -API CHANGES in matplotlib-0.63 - - Dates are now represented internally as float days since 0001-01-01, - UTC. - - All date tickers and formatters are now in matplotlib.dates, rather - than matplotlib.tickers - - converters have been abolished from all functions and classes. - num2date and date2num are now the converter functions for all date - plots - - Most of the date tick locators have a different meaning in their - constructors. In the prior implementation, the first argument was a - base and multiples of the base were ticked. Eg - - HourLocator(5) # old: tick every 5 minutes - - In the new implementation, the explicit points you want to tick are - provided as a number or sequence - - HourLocator(range(0,5,61)) # new: tick every 5 minutes - - This gives much greater flexibility. I have tried to make the - default constructors (no args) behave similarly, where possible. - - Note that YearLocator still works under the base/multiple scheme. - The difference between the YearLocator and the other locators is - that years are not recurrent. - - - Financial functions: - - matplotlib.finance.quotes_historical_yahoo(ticker, date1, date2) - - date1, date2 are now datetime instances. Return value is a list - of quotes where the quote time is a float - days since gregorian - start, as returned by date2num - - See examples/finance_demo.py for example usage of new API - - -API CHANGES in matplotlib-0.61 - - canvas.connect is now deprecated for event handling. use - mpl_connect and mpl_disconnect instead. The callback signature is - func(event) rather than func(widget, evet) - -API CHANGES in matplotlib-0.60 - -ColormapJet and Grayscale are deprecated. For backwards -compatibility, they can be obtained either by doing - - from matplotlib.cm import ColormapJet - -or - - from matplotlib.matlab import * - -They are replaced by cm.jet and cm.grey - - -API CHANGES in matplotlib-0.54.3 - -removed the set_default_font / get_default_font scheme from the -font_manager to unify customization of font defaults with the rest of -the rc scheme. See examples/font_properties_demo.py and help(rc) in -matplotlib.matlab. - - -API CHANGES in matplotlib-0.54 - -matlab interface -================ - -dpi ---- - -Several of the backends used a PIXELS_PER_INCH hack that I added to -try and make images render consistently across backends. This just -complicated matters. So you may find that some font sizes and line -widths appear different than before. Apologies for the -inconvenience. You should set the dpi to an accurate value for your -screen to get true sizes. - - -pcolor and scatter ------------------- - -There are two changes to the matlab interface API, both involving the -patch drawing commands. For efficiency, pcolor and scatter have been -rewritten to use polygon collections, which are a new set of objects -from matplotlib.collections designed to enable efficient handling of -large collections of objects. These new collections make it possible -to build large scatter plots or pcolor plots with no loops at the -python level, and are significantly faster than their predecessors. -The original pcolor and scatter functions are retained as -pcolor_classic and scatter_classic. - -The return value from pcolor is a PolyCollection. Most of the -propertes that are available on rectangles or other patches are also -available on PolyCollections, eg you can say - - c = scatter(blah, blah) - c.set_linewidth(1.0) - c.set_facecolor('r') - c.set_alpha(0.5) - -or - - c = scatter(blah, blah) - set(c, 'linewidth', 1.0, 'facecolor', 'r', 'alpha', 0.5) - - -Because the collection is a single object, you no longer need to loop -over the return value of scatter or pcolor to set properties for the -entire list. - -If you want the different elements of a collection to vary on a -property, eg to have different line widths, see matplotlib.collections -for a discussion on how to set the properties as a sequence. - -For scatter, the size argument is now in points^2 (the area of the -symbol in points) as in matlab and is not in data coords as before. -Using sizes in data coords caused several problems. So you will need -to adjust your size arguments accordingly or use scatter_classic. - -mathtext spacing ----------------- - -For reasons not clear to me (and which I'll eventually fix) spacing no -longer works in font groups. However, I added three new spacing -commands which compensate for this '\ ' (regular space), '\/' (small -space) and '\hspace{frac}' where frac is a fraction of fontsize in -points. You will need to quote spaces in font strings, is - - title(r'$\rm{Histogram\ of\ IQ:}\ \mu=100,\ \sigma=15$') - - - -Object interface - Application programmers -========================================== - -Autoscaling ------------- - - The x and y axis instances no longer have autoscale view. These are - handled by axes.autoscale_view - -Axes creation --------------- - - You should not instantiate your own Axes any more using the OO API. - Rather, create a Figure as before and in place of - - f = Figure(figsize=(5,4), dpi=100) - a = Subplot(f, 111) - f.add_axis(a) - - use - - f = Figure(figsize=(5,4), dpi=100) - a = f.add_subplot(111) - - That is, add_axis no longer exists and is replaced by - - add_axes(rect, axisbg=defaultcolor, frameon=True) - add_subplot(num, axisbg=defaultcolor, frameon=True) - -Artist methods ---------------- - - If you define your own Artists, you need to rename the _draw method - to draw - -Bounding boxes --------------- - - matplotlib.transforms.Bound2D is replaced by - matplotlib.transforms.Bbox. If you want to construct a bbox from - left, bottom, width, height (the signature for Bound2D), use - matplotlib.transforms.lbwh_to_bbox, as in - - bbox = clickBBox = lbwh_to_bbox(left, bottom, width, height) - - The Bbox has a different API than the Bound2D. Eg, if you want to - get the width and height of the bbox - - OLD - width = fig.bbox.x.interval() - height = fig.bbox.y.interval() - - New - width = fig.bbox.width() - height = fig.bbox.height() - - - - -Object constructors -------------------- - - You no longer pass the bbox, dpi, or transforms to the various - Artist constructors. The old way or creating lines and rectangles - was cumbersome because you had to pass so many attributes to the - Line2D and Rectangle classes not related directly to the gemoetry - and properties of the object. Now default values are added to the - object when you call axes.add_line or axes.add_patch, so they are - hidden from the user. - - If you want to define a custom transformation on these objects, call - o.set_transform(trans) where trans is a Transformation instance. - - In prior versions of you wanted to add a custom line in data coords, - you would have to do - - l = Line2D(dpi, bbox, x, y, - color = color, - transx = transx, - transy = transy, - ) - - now all you need is - - l = Line2D(x, y, color=color) - - and the axes will set the transformation for you (unless you have - set your own already, in which case it will eave it unchanged) - -Transformations ---------------- - - The entire transformation architecture has been rewritten. - Previously the x and y transformations where stored in the xaxis and - yaxis insstances. The problem with this approach is it only allows - for separable transforms (where the x and y transformations don't - depend on one another). But for cases like polar, they do. Now - transformations operate on x,y together. There is a new base class - matplotlib.transforms.Transformation and two concrete - implemetations, matplotlib.transforms.SeparableTransformation and - matplotlib.transforms.Affine. The SeparableTransformation is - constructed with the bounding box of the input (this determines the - rectangular coordinate system of the input, ie the x and y view - limits), the bounding box of the display, and possibily nonlinear - transformations of x and y. The 2 most frequently used - transformations, data cordinates -> display and axes coordinates -> - display are available as ax.transData and ax.transAxes. See - alignment_demo.py which uses axes coords. - - Also, the transformations should be much faster now, for two reasons - - * they are written entirely in extension code - - * because they operate on x and y together, they can do the entire - transformation in one loop. Earlier I did something along the - lines of - - xt = sx*func(x) + tx - yt = sy*func(y) + ty - - Although this was done in numerix, it still involves 6 length(x) - for-loops (the multiply, add, and function evaluation each for x - and y). Now all of that is done in a single pass. - - - If you are using transformations and bounding boxes to get the - cursor position in data coordinates, the method calls are a little - different now. See the updated examples/coords_demo.py which shows - you how to do this. - - Likewise, if you are using the artist bounding boxes to pick items - on the canvas with the GUI, the bbox methods are somewhat - different. You will need to see the updated - examples/object_picker.py. - - See unit/transforms_unit.py for many examples using the new - transformations. - - - -API changes at 0.50 - - * refactored Figure class so it is no longer backend dependent. - FigureCanvasBackend takes over the backend specific duties of the - Figure. matplotlib.backend_bases.FigureBase moved to - matplotlib.figure.Figure. - - * backends must implement FigureCanvasBackend (the thing that - controls the figure and handles the events if any) and - FigureManagerBackend (wraps the canvas and the window for matlab - interface). FigureCanvasBase implements a backend switching - mechanism - - * Figure is now an Artist (like everything else in the figure) and - is totally backend independent - - * GDFONTPATH renamed to TTFPATH - - * backend faceColor argument changed to rgbFace - - * colormap stuff moved to colors.py - - * arg_to_rgb in backend_bases moved to class ColorConverter in - colors.py - - * GD users must upgrade to gd-2.0.22 and gdmodule-0.52 since new gd - features (clipping, antialiased lines) are now used. - - * Renderer must implement points_to_pixels - -Migrating code: - - Matlab interface: - - The only API change for those using the matlab interface is in how - you call figure redraws for dynamically updating figures. In the - old API, you did - - fig.draw() - - In the new API, you do - - manager = get_current_fig_manager() - manager.canvas.draw() - - See the examples system_monitor.py, dynamic_demo.py, and anim.py - - API - - There is one important API change for application developers. - Figure instances used subclass GUI widgets that enabled them to be - placed directly into figures. Eg, FigureGTK subclassed - gtk.DrawingArea. Now the Figure class is independent of the - backend, and FigureCanvas takes over the functionality formerly - handled by Figure. In order to include figures into your apps, - you now need to do, for example - - # gtk example - fig = Figure(figsize=(5,4), dpi=100) - canvas = FigureCanvasGTK(fig) # a gtk.DrawingArea - canvas.show() - vbox.pack_start(canvas) - - If you use the NavigationToolbar, this in now intialized with a - FigureCanvas, not a Figure. The examples embedding_in_gtk.py, - embedding_in_gtk2.py, and mpl_with_glade.py all reflect the new - API so use these as a guide. - - All prior calls to - - figure.draw() and - figure.print_figure(args) - - should now be - - canvas.draw() and - canvas.print_figure(args) - - Apologies for the inconvenience. This refactorization brings - significant more freedom in developing matplotlib and should bring - better plotting capabilities, so I hope the inconvenience is worth - it. - - - -API changes at 0.42 - - * Refactoring AxisText to be backend independent. Text drawing and - get_window_extent functionality will be moved to the Renderer. - - * backend_bases.AxisTextBase is now text.Text module - - * All the erase and reset functionality removed frmo AxisText - not - needed with double buffered drawing. Ditto with state change. - Text instances have a get_prop_tup method that returns a hashable - tuple of text properties which you can use to see if text props - have changed, eg by caching a font or layout instance in a dict - with the prop tup as a key -- see RendererGTK.get_pango_layout in - backend_gtk for an example. - - * Text._get_xy_display renamed Text.get_xy_display - - * Artist set_renderer and wash_brushes methods removed - - * Moved Legend class from matplotlib.axes into matplotlib.legend - - * Moved Tick, XTick, YTick, Axis, XAxis, YAxis from matplotlib.axes - to matplotlib.axis - - * moved process_text_args to matplotlib.text - - * After getting Text handled in a backend independent fashion, the - import process is much cleaner since there are no longer cyclic - dependencies - - * matplotlib.matlab._get_current_fig_manager renamed to - matplotlib.matlab.get_current_fig_manager to allow user access to - the GUI window attribute, eg figManager.window for GTK and - figManager.frame for wx - - - - - -API changes at 0.40 - -- Artist - * __init__ takes a DPI instance and a Bound2D instance which is - the bounding box of the artist in display coords - * get_window_extent returns a Bound2D instance - * set_size is removed; replaced by bbox and dpi - * the clip_gc method is removed. Artists now clip themselves with - their box - * added _clipOn boolean attribute. If True, gc clip to bbox. - -- AxisTextBase - * Initialized with a transx, transy which are Transform instances - * set_drawing_area removed - * get_left_right and get_top_bottom are replaced by get_window_extent - -- Line2D Patches now take transx, transy - * Initialized with a transx, transy which are Transform instances - -- Patches - * Initialized with a transx, transy which are Transform instances - -- FigureBase attributes dpi is a DPI intance rather than scalar and - new attribute bbox is a Bound2D in display coords, and I got rid of - the left, width, height, etc... attributes. These are now - accessible as, for example, bbox.x.min is left, bbox.x.interval() is - width, bbox.y.max is top, etc... - -- GcfBase attribute pagesize renamed to figsize - -- Axes - * removed figbg attribute - * added fig instance to __init__ - * resizing is handled by figure call to resize. - -- Subplot - * added fig instance to __init__ - -- Renderer methods for patches now take gcEdge and gcFace instances. - gcFace=None takes the place of filled=False - -- True and False symbols provided by cbook in a python2.3 compatible - way - -- new module transforms supplies Bound1D, Bound2D and Transform - instances and more - -- Changes to the matlab helpers API - - * _matlab_helpers.GcfBase is renamed by Gcf. Backends no longer - need to derive from this class. Instead, they provide a factory - function new_figure_manager(num, figsize, dpi). The destroy - method of the GcfDerived from the backends is moved to the derived - FigureManager. - - * FigureManagerBase moved to backend_bases - - * Gcf.get_all_figwins renamed to Gcf.get_all_fig_managers - -Jeremy: - - Make sure to self._reset = False in AxisTextWX._set_font. This was - something missing in my backend code. Added: trunk/matplotlib/doc/api/api_changes.rst =================================================================== --- trunk/matplotlib/doc/api/api_changes.rst (rev 0) +++ trunk/matplotlib/doc/api/api_changes.rst 2008-11-19 14:45:44 UTC (rev 6415) @@ -0,0 +1,1497 @@ +=========== +API Changes +=========== + +This chapter is a log of changes to matplotlib that affect the +outward-facing API. If updating matplotlib breaks your scripts, this +list may help describe what changes may be necessary in your code. + +Changes for 0.98.x +================== + +* Font lookup now uses a nearest-neighbor approach rather than an + exact match. Some fonts may be different in plots, but should be + closer to what was requested. + +* :meth:`matplotlib.axes.Axes.set_xlim`, + :meth:`matplotlib.axes.Axes.set_ylim` now return a copy of the + :attr:`viewlim` array to avoid modify-in-place surprises. + +* :meth:`matplotlib.afm.AFM.get_fullname` and + :meth:`matplotlib.afm.AFM.get_familyname` no longer raise an + exception if the AFM file does not specify these optional + attributes, but returns a guess based on the required FontName + attribute. + +* Changed precision kwarg in :func:`matplotlib.pyplot.spy`; default is + 0, and the string value 'present' is used for sparse arrays only to + show filled locations. + +* :class:`matplotlib.collections.EllipseCollection` added. + +* Added ``angles`` kwarg to :func:`matplotlib.pyplot.quiver` for more + flexible specification of the arrow angles. + +* Deprecated (raise NotImplementedError) all the mlab2 functions from + :mod:`matplotlib.mlab` out of concern that some of them were not + clean room implementations. + +* Methods :meth:`matplotlib.collections.Collection.get_offsets` and + :meth:`matplotlib.collections.Collection.set_offsets` added to + :class:`~matplotlib.collections.Collection` base class. + +* :attr:`matplotlib.figure.Figure.figurePatch` renamed + :attr:`matplotlib.figure.Figure.patch`; + :attr:`matplotlib.axes.Axes.axesPatch` renamed + :attr:`matplotlib.axes.Axes.patch`; + :attr:`matplotlib.axes.Axes.axesFrame` renamed + :attr:`matplotlib.axes.Axes.frame`. + :meth:`matplotlib.axes.Axes.get_frame`, which returns + :attr:`matplotlib.axes.Axes.patch`, is deprecated. + +* Changes in the :class:`matplotlib.contour.ContourLabeler` attributes + (:func:`matplotlib.pyplot.clabel` function) so that they all have a + form like ``.labelAttribute``. The three attributes that are most + likely to be used by end users, ``.cl``, ``.cl_xy`` and + ``.cl_cvalues`` have been maintained for the moment (in addition to + their renamed versions), but they are deprecated and will eventually + be removed. + +* Moved several functions in :mod:`matplotlib.mlab` and + :mod:`matplotlib.cbook` into a separate module + :mod:`matplotlib.numerical_methods` because they were unrelated to + the initial purpose of mlab or cbook and appeared more coherent + elsewhere. + +Changes for 0.98.1 +================== + +* Removed broken :mod:`matplotlib.axes3d` support and replaced it with + a non-implemented error pointing to 0.91.x + +Changes for 0.98.0 +================== + +* :func:`matplotlib.image.imread` now no longer always returns RGBA data---if + the image is luminance or RGB, it will return a MxN or MxNx3 array + if possible. Also uint8 is no longer always forced to float. + +* Rewrote the :class:`matplotlib.cm.ScalarMappable` callback + infrastructure to use :class:`matplotlib.cbook.CallbackRegistry` + rather than custom callback handling. Any users of + :meth:`matplotlib.cm.ScalarMappable.add_observer` of the + :class:`~matplotlib.cm.ScalarMappable` should use the + :attr:`matplotlib.cm.ScalarMappable.callbacks` + :class:`~matplotlib.cbook.CallbackRegistry` instead. + +* New axes function and Axes method provide control over the plot + color cycle: :func:`matplotlib.axes.set_default_color_cycle` and + :meth:`matplotlib.axes.Axes.set_color_cycle`. + +* matplotlib now requires Python 2.4, so :mod:`matplotlib.cbook` will + no longer provide :class:`set`, :func:`enumerate`, :func:`reversed` + or :func:`izip` compatibility functions. + +* In Numpy 1.0, bins are specified by the left edges only. The axes + method :meth:`matplotlib.axes.Axes.hist` now uses future Numpy 1.3 + semantics for histograms. Providing ``binedges``, the last value gives + the upper-right edge now, which was implicitly set to +infinity in + Numpy 1.0. This also means that the last bin doesn't contain upper + outliers any more by default. + +* New axes method and pyplot function, + :func:`~matplotlib.pyplot.hexbin`, is an alternative to + :func:`~matplotlib.pyplot.scatter` for large datasets. It makes + something like a :func:`~matplotlib.pyplot.pcolor` of a 2-D + histogram, but uses hexagonal bins. + +* New kwarg, ``symmetric``, in :class:`matplotlib.ticker.MaxNLocator` + allows one require an axis to be centered around zero. + +* Toolkits must now be imported from ``mpl_toolkits`` (not ``matplotlib.toolkits``) + +Notes about the transforms refactoring +-------------------------------------- + +A major new feature of the 0.98 series is a more flexible and +extensible transformation infrastructure, written in Python/Numpy +rather than a custom C extension. + +The primary goal of this refactoring was to make it easier to +extend matplotlib to support new kinds of projections. This is +mostly an internal improvement, and the possible user-visible +changes it allows are yet to come. + +See :mod:`matplotlib.transforms` for a description of the design of +the new transformation framework. + +For efficiency, many of these functions return views into Numpy +arrays. This means that if you hold on to a reference to them, +their contents may change. If you want to store a snapshot of +their current values, use the Numpy array method copy(). + +The view intervals are now stored only in one place -- in the +:class:`matplotlib.axes.Axes` instance, not in the locator instances +as well. This means locators must get their limits from their +:class:`matplotlib.axis.Axis`, which in turn looks up its limits from +the :class:`~matplotlib.axes.Axes`. If a locator is used temporarily +and not assigned to an Axis or Axes, (e.g. in +:mod:`matplotlib.contour`), a dummy axis must be created to store its +bounds. Call :meth:`matplotlib.ticker.Locator.create_dummy_axis` to +do so. + +The functionality of :class:`Pbox` has been merged with +:class:`~matplotlib.transforms.Bbox`. Its methods now all return +copies rather than modifying in place. + +The following lists many of the simple changes necessary to update +code from the old transformation framework to the new one. In +particular, methods that return a copy are named with a verb in the +past tense, whereas methods that alter an object in place are named +with a verb in the present tense. + +:mod:`matplotlib.transforms` +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +============================================================ ============================================================ +Old method New method +============================================================ ============================================================ +:meth:`Bbox.get_bounds` :attr:`transforms.Bbox.bounds` +------------------------------------------------------------ ------------------------------------------------------------ +:meth:`Bbox.width` :attr:`transforms.Bbox.width` +------------------------------------------------------------ ------------------------------------------------------------ +:meth:`Bbox.height` :attr:`transforms.Bbox.height` +------------------------------------------------------------ ------------------------------------------------------------ +`Bbox.intervalx().get_bounds()` :attr:`transforms.Bbox.intervalx` +`Bbox.intervalx().set_bounds()` [:attr:`Bbox.intervalx` is now a property.] +------------------------------------------------------------ ------------------------------------------------------------ +`Bbox.intervaly().get_bounds()` :attr:`transforms.Bbox.intervaly` +`Bbox.intervaly().set_bounds()` [:attr:`Bbox.intervaly` is now a property.] +------------------------------------------------------------ ------------------------------------------------------------ +:meth:`Bbox.xmin` :attr:`transforms.Bbox.x0` or + :attr:`transforms.Bbox.xmin` [1]_ +------------------------------------------------------------ ------------------------------------------------------------ +:meth:`Bbox.ymin` :attr:`transforms.Bbox.y0` or + :attr:`transforms.Bbox.ymin` [1]_ +------------------------------------------------------------ ------------------------------------------------------------ +:meth:`Bbox.xmax` :attr:`transforms.Bbox.x1` or + :attr:`transforms.Bbox.xmax` [1]_ +------------------------------------------------------------ ------------------------------------------------------------ +:meth:`Bbox.ymax` :attr:`transforms.Bbox.y1` or + :attr:`transforms.Bbox.ymax` [1]_ +------------------------------------------------------------ ------------------------------------------------------------ +`Bbox.overlaps(bboxes)` `Bbox.count_overlaps(bboxes)` +------------------------------------------------------------ ------------------------------------------------------------ +`bbox_all(bboxes)` `Bbox.union(bboxes)` + [:meth:`transforms.Bbox.union` is a staticmethod.] +------------------------------------------------------------ ------------------------------------------------------------ +`lbwh_to_bbox(l, b, w, h)` `Bbox.from_bounds(x0, y0, w, h)` + [:meth:`transforms.Bb... [truncated message content] |