You can subscribe to this list here.
2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(115) |
Aug
(120) |
Sep
(137) |
Oct
(170) |
Nov
(461) |
Dec
(263) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(120) |
Feb
(74) |
Mar
(35) |
Apr
(74) |
May
(245) |
Jun
(356) |
Jul
(240) |
Aug
(115) |
Sep
(78) |
Oct
(225) |
Nov
(98) |
Dec
(271) |
2009 |
Jan
(132) |
Feb
(84) |
Mar
(74) |
Apr
(56) |
May
(90) |
Jun
(79) |
Jul
(83) |
Aug
(296) |
Sep
(214) |
Oct
(76) |
Nov
(82) |
Dec
(66) |
2010 |
Jan
(46) |
Feb
(58) |
Mar
(51) |
Apr
(77) |
May
(58) |
Jun
(126) |
Jul
(128) |
Aug
(64) |
Sep
(50) |
Oct
(44) |
Nov
(48) |
Dec
(54) |
2011 |
Jan
(68) |
Feb
(52) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
2018 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
1
(2) |
2
(2) |
3
(2) |
4
|
5
(2) |
6
(4) |
7
|
8
|
9
|
10
|
11
|
12
|
13
(1) |
14
(2) |
15
(3) |
16
(7) |
17
(1) |
18
(1) |
19
(3) |
20
(16) |
21
(3) |
22
(4) |
23
(2) |
24
|
25
|
26
(6) |
27
(3) |
28
(9) |
29
(2) |
30
(2) |
|
Revision: 8287 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8287&view=rev Author: efiring Date: 2010年04月28日 20:59:13 +0000 (2010年4月28日) Log Message: ----------- colorbar: set dividers to None in obsolete update_bruteforce Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/colorbar.py Modified: trunk/matplotlib/lib/matplotlib/colorbar.py =================================================================== --- trunk/matplotlib/lib/matplotlib/colorbar.py 2010年04月28日 20:49:48 UTC (rev 8286) +++ trunk/matplotlib/lib/matplotlib/colorbar.py 2010年04月28日 20:59:13 UTC (rev 8287) @@ -779,6 +779,7 @@ self.patch = None self.solids = None self.lines = None + self.dividers = None self.set_alpha(mappable.get_alpha()) self.cmap = mappable.cmap self.norm = mappable.norm This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8286 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8286&view=rev Author: efiring Date: 2010年04月28日 20:49:48 +0000 (2010年4月28日) Log Message: ----------- colorbar: close 2986719 with small fixups and docstring expansion Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/colorbar.py Modified: trunk/matplotlib/lib/matplotlib/colorbar.py =================================================================== --- trunk/matplotlib/lib/matplotlib/colorbar.py 2010年04月28日 19:50:39 UTC (rev 8285) +++ trunk/matplotlib/lib/matplotlib/colorbar.py 2010年04月28日 20:49:48 UTC (rev 8286) @@ -160,8 +160,9 @@ Draw a colorbar in an existing axes. This is a base class for the :class:`Colorbar` class, which is the - basis for the :func:`~matplotlib.pyplot.colorbar` method and pylab - function. + basis for the :func:`~matplotlib.pyplot.colorbar` function and the + :meth:`~matplotlib.figure.Figure.colorbar` method, which are the + usual ways of creating a colorbar. It is also useful by itself for showing a colormap. If the *cmap* kwarg is given but *boundaries* and *values* are left as None, @@ -411,6 +412,9 @@ if self.solids is not None: self.solids.remove() self.solids = col + if self.dividers is not None: + self.dividers.remove() + self.dividers = None if self.drawedges: self.dividers = collections.LineCollection(self._edges(X,Y), colors=(mpl.rcParams['axes.edgecolor'],), @@ -684,6 +688,17 @@ self.alpha = alpha class Colorbar(ColorbarBase): + """ + This class connects a :class:`ColorbarBase` to a + :class:`~matplotlib.cm.ScalarMappable` such as a + :class:`~matplotlib.image.AxesImage` generated via + :meth:`~matplotlib.axes.Axes.imshow`. + + It is not intended to be instantiated directly; instead, + use :meth:`~matplotlib.figure.Figure.colorbar` or + :func:`~matplotlib.pyplot.colorbar` to make your colorbar. + + """ def __init__(self, ax, mappable, **kw): mappable.autoscale_None() # Ensure mappable.norm.vmin, vmax # are set when colorbar is called, @@ -747,20 +762,28 @@ def update_bruteforce(self, mappable): ''' - Manually change any contour line colors. This is called - when the image or contour plot to which this colorbar belongs - is changed. + Destroy and rebuild the colorbar. This is + intended to become obsolete, and will probably be + deprecated and then removed. It is not called when + the pyplot.colorbar function or the Figure.colorbar + method are used to create the colorbar. + ''' # We are using an ugly brute-force method: clearing and # redrawing the whole thing. The problem is that if any # properties have been changed by methods other than the # colorbar methods, those changes will be lost. self.ax.cla() + # clearing the axes will delete outline, patch, solids, and lines: + self.outline = None + self.patch = None + self.solids = None + self.lines = None + self.set_alpha(mappable.get_alpha()) + self.cmap = mappable.cmap + self.norm = mappable.norm self.config_axis() self.draw_all() - #if self.vmin != self.norm.vmin or self.vmax != self.norm.vmax: - # self.ax.cla() - # self.draw_all() if isinstance(self.mappable, contour.ContourSet): CS = self.mappable if not CS.filled: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8285 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8285&view=rev Author: mdboom Date: 2010年04月28日 19:50:39 +0000 (2010年4月28日) Log Message: ----------- Remove extraneous debug print. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/text.py Modified: trunk/matplotlib/lib/matplotlib/text.py =================================================================== --- trunk/matplotlib/lib/matplotlib/text.py 2010年04月28日 19:50:11 UTC (rev 8284) +++ trunk/matplotlib/lib/matplotlib/text.py 2010年04月28日 19:50:39 UTC (rev 8285) @@ -1942,7 +1942,6 @@ if self._bbox_patch: posx, posy = self._x, self._y - print posx, posy x_box, y_box, w_box, h_box = _get_textbox(self, renderer) self._bbox_patch.set_bounds(0., 0., This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8284 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8284&view=rev Author: mdboom Date: 2010年04月28日 19:50:11 +0000 (2010年4月28日) Log Message: ----------- Fix docstring formatting. Modified Paths: -------------- trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst trunk/matplotlib/lib/matplotlib/axes.py trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py Modified: trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst =================================================================== --- trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst 2010年04月28日 19:44:47 UTC (rev 8283) +++ trunk/matplotlib/doc/mpl_toolkits/axes_grid/api/axis_artist_api.rst 2010年04月28日 19:50:11 UTC (rev 8284) @@ -1,6 +1,6 @@ :mod:`mpl_toolkits.axes_grid.axis_artist` -======================================= +========================================= .. autoclass:: mpl_toolkits.axes_grid.axis_artist.AxisArtist :members: Modified: trunk/matplotlib/lib/matplotlib/axes.py =================================================================== --- trunk/matplotlib/lib/matplotlib/axes.py 2010年04月28日 19:44:47 UTC (rev 8283) +++ trunk/matplotlib/lib/matplotlib/axes.py 2010年04月28日 19:50:11 UTC (rev 8284) @@ -1975,9 +1975,9 @@ Optional keyword arguments: - ============ ===================================== + ============ ========================================= Keyword Description - ============ ===================================== + ============ ========================================= *style* [ 'sci' (or 'scientific') | 'plain' ] plain turns off scientific notation *scilimits* (m, n), pair of integers; if *style* @@ -1991,7 +1991,7 @@ numeric offset is specified, it will be used. *axis* [ 'x' | 'y' | 'both' ] - ============ ===================================== + ============ ========================================= Only the major ticks are affected. If the method is called when the Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2010年04月28日 19:44:47 UTC (rev 8283) +++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2010年04月28日 19:50:11 UTC (rev 8284) @@ -52,6 +52,7 @@ ================ ========================================= *azim* Azimuthal viewing angle (default -60) *elev* Elevation viewing angle (default 30) + ================ ========================================= ''' if rect is None: @@ -349,9 +350,9 @@ the axes. Also optionally sets the mouse buttons for 3D rotation and zooming. - ============ ================================================ + ============ ======================================================= Argument Description - ============ ================================================ + ============ ======================================================= *rotate_btn* The integer or list of integers specifying which mouse button or buttons to use for 3D rotation of the axes. Default = 1. @@ -359,7 +360,8 @@ *zoom_btn* The integer or list of integers specifying which mouse button or buttons to use to zoom the 3D axes. Default = 3. - ============ ================================================ + ============ ======================================================= + """ self.button_pressed = None canv = self.figure.canvas @@ -636,22 +638,20 @@ but it also supports color mapping by supplying the *cmap* argument. - ========== ================================================ - Argument Description - ========== ================================================ - *X*, *Y*, Data values as numpy.arrays - *Z* - *rstride* Array row stride (step size) - *cstride* Array column stride (step size) - *color* Color of the surface patches - *cmap* A colormap for the surface patches. - *facecolors* Face colors for the individual patches - *norm* An instance of Normalize to map values to colors - *vmin* Minimum value to map - *vmax* Maximum value to map - *shade* Whether to shade the facecolors, default: - false when cmap specified, true otherwise - ========== ================================================ + ============= ================================================ + Argument Description + ============= ================================================ + *X*, *Y*, *Z* Data values as numpy.arrays + *rstride* Array row stride (step size) + *cstride* Array column stride (step size) + *color* Color of the surface patches + *cmap* A colormap for the surface patches. + *facecolors* Face colors for the individual patches + *norm* An instance of Normalize to map values to colors + *vmin* Minimum value to map + *vmax* Maximum value to map + *shade* Whether to shade the facecolors + ============= ================================================ Other arguments are passed on to :func:`~mpl_toolkits.mplot3d.art3d.Poly3DCollection.__init__` @@ -1083,16 +1083,21 @@ dx, dy, dz can be arrays or scalars. *color* can be: + - A single color value, to color all bars the same color. + - An array of colors of length N bars, to color each bar - independently. - - An array of colors of length 6, to color the faces of the bars - similarly. + independently. + + - An array of colors of length 6, to color the faces of the + bars similarly. + - An array of colors of length 6 * N bars, to color each face - independently. + independently. - When coloring the faces of the boxes specifically, this is the order - of the coloring: + When coloring the faces of the boxes specifically, this is + the order of the coloring: + 1. -Z (bottom of box) 2. +Z (top of box) 3. -Y This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8283 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8283&view=rev Author: efiring Date: 2010年04月28日 19:44:47 +0000 (2010年4月28日) Log Message: ----------- Applied whitespace patch by Mark Roddy; closes 2993733. Modified Paths: -------------- trunk/matplotlib/examples/api/span_regions.py trunk/matplotlib/examples/pylab_examples/usetex_demo.py trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py trunk/matplotlib/lib/matplotlib/backends/backend_tkagg.py trunk/matplotlib/lib/matplotlib/mlab.py trunk/matplotlib/lib/matplotlib/pylab.py trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py trunk/matplotlib/release/win32/data/setupwin.py trunk/matplotlib/release/win32/data/setupwinegg.py Modified: trunk/matplotlib/examples/api/span_regions.py =================================================================== --- trunk/matplotlib/examples/api/span_regions.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/examples/api/span_regions.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -21,11 +21,11 @@ ax.axhline(0, color='black', lw=2) collection = collections.BrokenBarHCollection.span_where( - t, ymin=0, ymax=1, where=s1>0, facecolor='green', alpha=0.5) + t, ymin=0, ymax=1, where=s1>0, facecolor='green', alpha=0.5) ax.add_collection(collection) collection = collections.BrokenBarHCollection.span_where( - t, ymin=-1, ymax=0, where=s1<0, facecolor='red', alpha=0.5) + t, ymin=-1, ymax=0, where=s1<0, facecolor='red', alpha=0.5) ax.add_collection(collection) Modified: trunk/matplotlib/examples/pylab_examples/usetex_demo.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/usetex_demo.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/examples/pylab_examples/usetex_demo.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -41,8 +41,8 @@ pylab.yticks((0, 0.5, 1), ('0', '.5', '1'), color = 'k', size = 20) ## Right Y-axis labels -pylab.text(1.05, 0.5, r"\bf{level set} $\phi$", {'color' : 'g', 'fontsize' : 20}, - horizontalalignment = 'left', +pylab.text(1.05, 0.5, r"\bf{level set} $\phi$", {'color' : 'g', 'fontsize' : 20}, + horizontalalignment = 'left', verticalalignment = 'center', rotation = 90, clip_on = False) Modified: trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/lib/matplotlib/backends/backend_cairo.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -138,8 +138,8 @@ def draw_path(self, gc, path, transform, rgbFace=None): - if len(path.vertices) > 18980: - raise ValueError("The Cairo backend can not draw paths longer than 18980 points.") + if len(path.vertices) > 18980: + raise ValueError("The Cairo backend can not draw paths longer than 18980 points.") ctx = gc.ctx @@ -148,7 +148,7 @@ ctx.new_path() self.convert_path(ctx, path, transform) - + self._fill_and_stroke(ctx, rgbFace, gc.get_alpha()) def draw_image(self, gc, x, y, im): Modified: trunk/matplotlib/lib/matplotlib/backends/backend_tkagg.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_tkagg.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/lib/matplotlib/backends/backend_tkagg.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -241,7 +241,7 @@ self._resize_callback(event) # compute desired figure size in inches - dpival = self.figure.dpi + dpival = self.figure.dpi winch = width/dpival hinch = height/dpival self.figure.set_size_inches(winch, hinch) Modified: trunk/matplotlib/lib/matplotlib/mlab.py =================================================================== --- trunk/matplotlib/lib/matplotlib/mlab.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/lib/matplotlib/mlab.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -2309,11 +2309,11 @@ if needheader: while 1: - # skip past any comments and consume one line of column header - row = reader.next() - if len(row) and row[0].startswith(comments): - continue - break + # skip past any comments and consume one line of column header + row = reader.next() + if len(row) and row[0].startswith(comments): + continue + break # iterate over the remaining rows and convert the data to date # objects, ints, or floats as approriate Modified: trunk/matplotlib/lib/matplotlib/pylab.py =================================================================== --- trunk/matplotlib/lib/matplotlib/pylab.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/lib/matplotlib/pylab.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -252,7 +252,7 @@ import numpy.ma as ma def load(*args, **kwargs): - raise NotImplementedError(load.__doc__) + raise NotImplementedError(load.__doc__) load.__doc__ = """\ pylab no longer provides a load function, though the old pylab function is still available as matplotlib.mlab.load (you can refer @@ -265,7 +265,7 @@ def save(*args, **kwargs): - raise NotImplementedError(save.__doc__) + raise NotImplementedError(save.__doc__) save.__doc__ = """\ pylab no longer provides a save function, though the old pylab function is still available as matplotlib.mlab.save (you can still Modified: trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py =================================================================== --- trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/lib/mpl_toolkits/mplot3d/axes3d.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -779,7 +779,7 @@ shade = np.array(shade) mask = ~np.isnan(shade) - if len(shade[mask]) > 0: + if len(shade[mask]) > 0: norm = Normalize(min(shade[mask]), max(shade[mask])) if art3d.iscolor(color): color = color.copy() Modified: trunk/matplotlib/release/win32/data/setupwin.py =================================================================== --- trunk/matplotlib/release/win32/data/setupwin.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/release/win32/data/setupwin.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -1,12 +1,12 @@ from distutils import cygwinccompiler try: - # Python 2.6 - # Replace the msvcr func to return an [] - cygwinccompiler.get_msvcr - cygwinccompiler.get_msvcr = lambda: [] + # Python 2.6 + # Replace the msvcr func to return an [] + cygwinccompiler.get_msvcr + cygwinccompiler.get_msvcr = lambda: [] except AttributeError: - pass + pass execfile('setup.py') Modified: trunk/matplotlib/release/win32/data/setupwinegg.py =================================================================== --- trunk/matplotlib/release/win32/data/setupwinegg.py 2010年04月28日 19:17:17 UTC (rev 8282) +++ trunk/matplotlib/release/win32/data/setupwinegg.py 2010年04月28日 19:44:47 UTC (rev 8283) @@ -1,13 +1,13 @@ from distutils import cygwinccompiler try: - # Python 2.6 - # Replace the msvcr func to return an empty list - cygwinccompiler.get_msvcr - cygwinccompiler.get_msvcr = lambda: [] + # Python 2.6 + # Replace the msvcr func to return an empty list + cygwinccompiler.get_msvcr + cygwinccompiler.get_msvcr = lambda: [] except AttributeError: - pass + pass from setuptools import setup execfile('setup.py', This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8282 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8282&view=rev Author: efiring Date: 2010年04月28日 19:17:17 +0000 (2010年4月28日) Log Message: ----------- savefig: make the "transparent" kwarg work as advertised Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backend_bases.py trunk/matplotlib/lib/matplotlib/figure.py Modified: trunk/matplotlib/lib/matplotlib/backend_bases.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backend_bases.py 2010年04月28日 18:14:06 UTC (rev 8281) +++ trunk/matplotlib/lib/matplotlib/backend_bases.py 2010年04月28日 19:17:17 UTC (rev 8282) @@ -868,7 +868,7 @@ Backends need to implement a few specific methods in order to use their own timing mechanisms so that the timer events are integrated into their event loops. - + Mandatory functions that must be implemented: * _timer_start: Contains backend-specific code for starting the timer * _timer_stop: Contains backend-specific code for stopping the timer @@ -883,7 +883,7 @@ * _on_timer: This is the internal function that any timer object should call, which will handle the task of running all callbacks that have been set. - + Attributes: * interval: The time between timer events in milliseconds. Default is 1000 ms. @@ -1938,9 +1938,9 @@ Creates a new backend-specific subclass of :class:`backend_bases.Timer`. This is useful for getting periodic events through the backend's native event loop. Implemented only for backends with GUIs. - + optional arguments: - + *interval* Timer interval in milliseconds *callbacks* Modified: trunk/matplotlib/lib/matplotlib/figure.py =================================================================== --- trunk/matplotlib/lib/matplotlib/figure.py 2010年04月28日 18:14:06 UTC (rev 8281) +++ trunk/matplotlib/lib/matplotlib/figure.py 2010年04月28日 19:17:17 UTC (rev 8282) @@ -1040,8 +1040,10 @@ backend. Most backends support png, pdf, ps, eps and svg. *transparent*: - If *True*, the figure patch and axes patches will all be - transparent. This is useful, for example, for displaying + If *True*, the axes patches will all be transparent; the + figure patch will also be transparent unless facecolor + and/or edgecolor are specified via kwargs. + This is useful, for example, for displaying a plot on top of a colored background on a web page. The transparency of these patches will be restored to their original values upon exit of this function. @@ -1061,9 +1063,7 @@ """ - for key in ('dpi', 'facecolor', 'edgecolor'): - if key not in kwargs: - kwargs[key] = rcParams['savefig.%s'%key] + kwargs.setdefault('dpi', rcParams['savefig.dpi']) extension = rcParams['savefig.extension'] if args and is_string_like(args[0]) and '.' not in args[0] and extension != 'auto': @@ -1072,20 +1072,25 @@ transparent = kwargs.pop('transparent', False) if transparent: - original_figure_alpha = self.patch.get_alpha() - self.patch.set_alpha(0.0) - original_axes_alpha = [] + kwargs.setdefault('facecolor', 'none') + kwargs.setdefault('edgecolor', 'none') + original_axes_colors = [] for ax in self.axes: patch = ax.patch - original_axes_alpha.append(patch.get_alpha()) - patch.set_alpha(0.0) + original_axes_colors.append((patch.get_facecolor(), + patch.get_edgecolor())) + patch.set_facecolor('none') + patch.set_edgecolor('none') + else: + kwargs.setdefault('facecolor', rcParams['savefig.facecolor']) + kwargs.setdefault('edgecolor', rcParams['savefig.edgecolor']) self.canvas.print_figure(*args, **kwargs) if transparent: - self.patch.set_alpha(original_figure_alpha) - for ax, alpha in zip(self.axes, original_axes_alpha): - ax.patch.set_alpha(alpha) + for ax, cc in zip(self.axes, original_axes_colors): + ax.patch.set_facecolor(cc[0]) + ax.patch.set_edgecolor(cc[1]) @docstring.dedent_interpd def colorbar(self, mappable, cax=None, ax=None, **kw): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8281 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8281&view=rev Author: mdboom Date: 2010年04月28日 18:14:06 +0000 (2010年4月28日) Log Message: ----------- Add interpolation option to fill between so intersections are not broken. Thanks to Joonas Paalasmaa (Bug #2978358) for the report and initial implementation. Modified Paths: -------------- trunk/matplotlib/examples/pylab_examples/fill_between_demo.py trunk/matplotlib/lib/matplotlib/axes.py trunk/matplotlib/lib/matplotlib/pyplot.py trunk/matplotlib/lib/matplotlib/tests/test_axes.py Added Paths: ----------- trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.pdf trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.png trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.svg Modified: trunk/matplotlib/examples/pylab_examples/fill_between_demo.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/fill_between_demo.py 2010年04月28日 15:08:19 UTC (rev 8280) +++ trunk/matplotlib/examples/pylab_examples/fill_between_demo.py 2010年04月28日 18:14:06 UTC (rev 8281) @@ -29,16 +29,16 @@ fig = figure() ax = fig.add_subplot(211) ax.plot(x, y1, x, y2, color='black') -ax.fill_between(x, y1, y2, where=y2>=y1, facecolor='green') -ax.fill_between(x, y1, y2, where=y2<=y1, facecolor='red') +ax.fill_between(x, y1, y2, where=y2>=y1, facecolor='green', interpolate=True) +ax.fill_between(x, y1, y2, where=y2<=y1, facecolor='red', interpolate=True) ax.set_title('fill between where') # Test support for masked arrays. y2 = np.ma.masked_greater(y2, 1.0) ax1 = fig.add_subplot(212, sharex=ax) ax1.plot(x, y1, x, y2, color='black') -ax1.fill_between(x, y1, y2, where=y2>=y1, facecolor='green') -ax1.fill_between(x, y1, y2, where=y2<=y1, facecolor='red') +ax1.fill_between(x, y1, y2, where=y2>=y1, facecolor='green', interpolate=True) +ax1.fill_between(x, y1, y2, where=y2<=y1, facecolor='red', interpolate=True) ax1.set_title('Now regions with y2>1 are masked') # This example illustrates a problem; because of the data Modified: trunk/matplotlib/lib/matplotlib/axes.py =================================================================== --- trunk/matplotlib/lib/matplotlib/axes.py 2010年04月28日 15:08:19 UTC (rev 8280) +++ trunk/matplotlib/lib/matplotlib/axes.py 2010年04月28日 18:14:06 UTC (rev 8281) @@ -6157,7 +6157,8 @@ return patches @docstring.dedent_interpd - def fill_between(self, x, y1, y2=0, where=None, **kwargs): + def fill_between(self, x, y1, y2=0, where=None, interpolate=False, + **kwargs): """ call signature:: @@ -6181,6 +6182,12 @@ it is a a N length numpy boolean array and the fill will only happen over the regions where ``where==True`` + *interpolate* + If True, interpolate between the two lines to find the + precise point of intersection. Otherwise, the start and + end points of the filled region will only occur on explicit + values in the *x* array. + *kwargs* keyword args passed on to the :class:`PolyCollection` @@ -6236,17 +6243,41 @@ N = len(xslice) X = np.zeros((2*N+2, 2), np.float) - # the purpose of the next two lines is for when y2 is a - # scalar like 0 and we want the fill to go all the way - # down to 0 even if none of the y1 sample points do - X[0] = xslice[0], y2slice[0] - X[N+1] = xslice[-1], y2slice[-1] + if interpolate: + def get_interp_point(ind): + x_values = x[ind-1:ind+1] + diff_values = y1[ind-1:ind+1] - y2[ind-1:ind+1] + y1_values = y1[ind-1:ind+1] + if len(diff_values) == 2: + if np.ma.is_masked(diff_values[1]): + return x[ind-1], y1[ind-1] + elif np.ma.is_masked(diff_values[0]): + return x[ind], y1[ind] + + diff_order = diff_values.argsort() + diff_root_x = np.interp( + 0, diff_values[diff_order], x_values[diff_order]) + diff_root_y = np.interp(diff_root_x, x_values, y1_values) + return diff_root_x, diff_root_y + + start = get_interp_point(ind0) + end = get_interp_point(ind1) + else: + # the purpose of the next two lines is for when y2 is a + # scalar like 0 and we want the fill to go all the way + # down to 0 even if none of the y1 sample points do + start = xslice[0], y2slice[0] + end = xslice[-1], y2slice[-1] + + X[0] = start + X[N+1] = end + X[1:N+1,0] = xslice X[1:N+1,1] = y1slice X[N+2:,0] = xslice[::-1] X[N+2:,1] = y2slice[::-1] - + polys.append(X) collection = mcoll.PolyCollection(polys, **kwargs) @@ -6256,7 +6287,6 @@ XY2 = np.array([x[where], y2[where]]).T self.dataLim.update_from_data_xy(XY1, self.ignore_existing_data_limits, updatex=True, updatey=True) - self.dataLim.update_from_data_xy(XY2, self.ignore_existing_data_limits, updatex=False, updatey=True) self.add_collection(collection) Modified: trunk/matplotlib/lib/matplotlib/pyplot.py =================================================================== --- trunk/matplotlib/lib/matplotlib/pyplot.py 2010年04月28日 15:08:19 UTC (rev 8280) +++ trunk/matplotlib/lib/matplotlib/pyplot.py 2010年04月28日 18:14:06 UTC (rev 8281) @@ -2049,7 +2049,7 @@ # This function was autogenerated by boilerplate.py. Do not edit as # changes will be lost @autogen_docstring(Axes.fill_between) -def fill_between(x, y1, y2=0, where=None, hold=None, **kwargs): +def fill_between(x, y1, y2=0, where=None, interpolate=False, hold=None, **kwargs): ax = gca() # allow callers to override the hold state by passing hold=True|False washold = ax.ishold() @@ -2057,7 +2057,7 @@ if hold is not None: ax.hold(hold) try: - ret = ax.fill_between(x, y1, y2, where, **kwargs) + ret = ax.fill_between(x, y1, y2, where, interpolate, **kwargs) draw_if_interactive() finally: ax.hold(washold) Added: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.pdf =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.pdf ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.png =================================================================== (Binary files differ) Property changes on: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.svg =================================================================== --- trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.svg (rev 0) +++ trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/fill_between_interpolate.svg 2010年04月28日 18:14:06 UTC (rev 8281) @@ -0,0 +1,763 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Created with matplotlib (http://matplotlib.sourceforge.net/) --> +<svg width="576pt" height="432pt" viewBox="0 0 576 432" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + version="1.1" + id="svg1"> +<filter id="colorAdd"><feComposite in="SourceGraphic" in2="BackgroundImage" operator="arithmetic" k2="1" k3="1"/></filter> +<g id="figure1"> +<g id="patch1"> +<path style="fill: #ffffff; stroke: #ffffff; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M0.000000 432.000000L576.000000 432.000000L576.000000 0.000000 +L0.000000 0.000000L0.000000 432.000000"/> +</g> +<g id="axes1"> +<g id="patch2"> +<path style="fill: #ffffff; opacity: 1.000000" d="M72.000000 200.290909L518.400000 200.290909L518.400000 43.200000 +L72.000000 43.200000L72.000000 200.290909"/> +</g> +<g id="PolyCollection1"> +<defs> +<path id="coll0_0_aaf56935a2c13518ed60e01cdc1dee73" d="M72.000000 -310.254545L72.000000 -310.254545L76.464000 -316.817449 +L80.928000 -323.276852L85.392000 -329.530886L89.856000 -335.480920 +L94.320000 -341.033119L98.784000 -346.099921L103.248000 -350.601421 +L107.712000 -354.466626L112.176000 -357.634580L112.508717 -357.815006 +L112.176000 -358.670796L107.712000 -367.110587L103.248000 -371.977904 +L98.784000 -372.966916L94.320000 -370.015479L89.856000 -363.309042 +L85.392000 -353.268996L80.928000 -340.526195L76.464000 -325.881314 +L72.000000 -310.254545z"/> +<path id="coll0_1_a4538251d9ee85a3e02c1608986ad8bb" d="M183.600000 -310.254545L188.064000 -303.691642L192.528000 -297.232239 +L196.992000 -290.978205L201.456000 -285.028171L205.920000 -279.475972 +L210.384000 -274.409170L214.848000 -269.907670L219.312000 -266.042465 +L223.776000 -262.874511L228.240000 -260.453768L232.704000 -258.818413 +L237.168000 -257.994237L241.632000 -257.994237L246.096000 -258.818413 +L250.560000 -260.453768L254.691283 -262.694085L250.560000 -273.320258 +L246.096000 -287.122937L241.632000 -302.379061L237.168000 -318.130030 +L232.704000 -333.386154L228.240000 -347.188833L223.776000 -358.670796 +L219.312000 -367.110587L214.848000 -371.977904L210.384000 -372.966916 +L205.920000 -370.015479L201.456000 -363.309042L196.992000 -353.268996 +L192.528000 -340.526195L188.064000 -325.881314z"/> +<path id="coll0_2_7e1bc78ca422414c858b233668c6bc42" d="M295.200000 -310.254545L299.664000 -316.817449L304.128000 -323.276852 +L308.592000 -329.530886L313.056000 -335.480920L317.520000 -341.033119 +L321.984000 -346.099921L326.448000 -350.601421L330.912000 -354.466626 +L335.376000 -357.634580L335.708717 -357.815006L335.376000 -358.670796 +L330.912000 -367.110587L326.448000 -371.977904L321.984000 -372.966916 +L317.520000 -370.015479L313.056000 -363.309042L308.592000 -353.268996 +L304.128000 -340.526195L299.664000 -325.881314z"/> +<path id="coll0_3_c3b5c2b0e85ad5a4572d45dacb38da0e" d="M406.800000 -310.254545L411.264000 -303.691642L415.728000 -297.232239 +L420.192000 -290.978205L424.656000 -285.028171L429.120000 -279.475972 +L433.584000 -274.409170L438.048000 -269.907670L442.512000 -266.042465 +L446.976000 -262.874511L451.440000 -260.453768L455.904000 -258.818413 +L460.368000 -257.994237L464.832000 -257.994237L469.296000 -258.818413 +L473.760000 -260.453768L477.891283 -262.694085L473.760000 -273.320258 +L469.296000 -287.122937L464.832000 -302.379061L460.368000 -318.130030 +L455.904000 -333.386154L451.440000 -347.188833L446.976000 -358.670796 +L442.512000 -367.110587L438.048000 -371.977904L433.584000 -372.966916 +L429.120000 -370.015479L424.656000 -363.309042L420.192000 -353.268996 +L415.728000 -340.526195L411.264000 -325.881314z"/> +</defs> +<defs> + <clipPath id="pad2bdf97e9fd82d59a5c57b91897f3de"> +<rect x="72.000000" y="43.200000" width="446.400000" height="157.090909"/> + </clipPath> +</defs><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll0_0_aaf56935a2c13518ed60e01cdc1dee73" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll0_1_a4538251d9ee85a3e02c1608986ad8bb" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll0_2_7e1bc78ca422414c858b233668c6bc42" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll0_3_c3b5c2b0e85ad5a4572d45dacb38da0e" x="0.000000" y="432.000000"/> +</g></g> +<g id="PolyCollection2"> +<defs> +<path id="coll1_0_59cf1511b6d916e21dd73a7f3e4d31ec" d="M72.000000 -310.254545L72.000000 -310.254545L72.000000 -310.254545 +L72.000000 -310.254545z"/> +<path id="coll1_1_e39ea564cf8eb3ca5381599ae079b29b" d="M112.508717 -357.815006L116.640000 -360.055323L121.104000 -361.690678 +L125.568000 -362.514854L130.032000 -362.514854L134.496000 -361.690678 +L138.960000 -360.055323L143.424000 -357.634580L147.888000 -354.466626 +L152.352000 -350.601421L156.816000 -346.099921L161.280000 -341.033119 +L165.744000 -335.480920L170.208000 -329.530886L174.672000 -323.276852 +L179.136000 -316.817449L183.600000 -310.254545L183.600000 -310.254545 +L183.600000 -310.254545L179.136000 -294.627777L174.672000 -279.982896 +L170.208000 -267.240095L165.744000 -257.200049L161.280000 -250.493612 +L156.816000 -247.542175L152.352000 -248.531187L147.888000 -253.398504 +L143.424000 -261.838295L138.960000 -273.320258L134.496000 -287.122937 +L130.032000 -302.379061L125.568000 -318.130030L121.104000 -333.386154 +L116.640000 -347.188833z"/> +<path id="coll1_2_0f64580eb1567b0582e386cb71b8b9cd" d="M254.691283 -262.694085L255.024000 -262.874511L259.488000 -266.042465 +L263.952000 -269.907670L268.416000 -274.409170L272.880000 -279.475972 +L277.344000 -285.028171L281.808000 -290.978205L286.272000 -297.232239 +L290.736000 -303.691642L295.200000 -310.254545L295.200000 -310.254545 +L295.200000 -310.254545L290.736000 -294.627777L286.272000 -279.982896 +L281.808000 -267.240095L277.344000 -257.200049L272.880000 -250.493612 +L268.416000 -247.542175L263.952000 -248.531187L259.488000 -253.398504 +L255.024000 -261.838295z"/> +<path id="coll1_3_ca80bd8ff98b9208864e7e898d4b563e" d="M335.708717 -357.815006L339.840000 -360.055323L344.304000 -361.690678 +L348.768000 -362.514854L353.232000 -362.514854L357.696000 -361.690678 +L362.160000 -360.055323L366.624000 -357.634580L371.088000 -354.466626 +L375.552000 -350.601421L380.016000 -346.099921L384.480000 -341.033119 +L388.944000 -335.480920L393.408000 -329.530886L397.872000 -323.276852 +L402.336000 -316.817449L406.800000 -310.254545L406.800000 -310.254545 +L406.800000 -310.254545L402.336000 -294.627777L397.872000 -279.982896 +L393.408000 -267.240095L388.944000 -257.200049L384.480000 -250.493612 +L380.016000 -247.542175L375.552000 -248.531187L371.088000 -253.398504 +L366.624000 -261.838295L362.160000 -273.320258L357.696000 -287.122937 +L353.232000 -302.379061L348.768000 -318.130030L344.304000 -333.386154 +L339.840000 -347.188833z"/> +<path id="coll1_4_c1ff4955e7872f3ca161dc94104c2fad" d="M477.891283 -262.694085L478.224000 -262.874511L482.688000 -266.042465 +L487.152000 -269.907670L491.616000 -274.409170L496.080000 -279.475972 +L500.544000 -285.028171L505.008000 -290.978205L509.472000 -297.232239 +L513.936000 -303.691642L513.936000 -303.691642L513.936000 -294.627777 +L509.472000 -279.982896L505.008000 -267.240095L500.544000 -257.200049 +L496.080000 -250.493612L491.616000 -247.542175L487.152000 -248.531187 +L482.688000 -253.398504L478.224000 -261.838295z"/> +</defs> +<g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll1_0_59cf1511b6d916e21dd73a7f3e4d31ec" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll1_1_e39ea564cf8eb3ca5381599ae079b29b" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll1_2_0f64580eb1567b0582e386cb71b8b9cd" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll1_3_ca80bd8ff98b9208864e7e898d4b563e" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll1_4_c1ff4955e7872f3ca161dc94104c2fad" x="0.000000" y="432.000000"/> +</g></g> +<g id="line2d1"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)" d="M72.000000 121.745455L76.464000 115.182551L80.928000 108.723148 +L85.392000 102.469114L89.856000 96.519080L94.320000 90.966881 +L98.784000 85.900079L103.248000 81.398579L107.712000 77.533374 +L112.176000 74.365420L116.640000 71.944677L121.104000 70.309322 +L125.568000 69.485146L130.032000 69.485146L134.496000 70.309322 +L138.960000 71.944677L143.424000 74.365420L147.888000 77.533374 +L152.352000 81.398579L156.816000 85.900079L161.280000 90.966881 +L165.744000 96.519080L170.208000 102.469114L174.672000 108.723148 +L179.136000 115.182551L183.600000 121.745455L188.064000 128.308358 +L192.528000 134.767761L196.992000 141.021795L201.456000 146.971829 +L205.920000 152.524028L210.384000 157.590830L214.848000 162.092330 +L219.312000 165.957535L223.776000 169.125489L228.240000 171.546232 +L232.704000 173.181587L237.168000 174.005763L241.632000 174.005763 +L246.096000 173.181587L250.560000 171.546232L255.024000 169.125489 +L259.488000 165.957535L263.952000 162.092330L268.416000 157.590830 +L272.880000 152.524028L277.344000 146.971829L281.808000 141.021795 +L286.272000 134.767761L290.736000 128.308358L295.200000 121.745455 +L299.664000 115.182551L304.128000 108.723148L308.592000 102.469114 +L313.056000 96.519080L317.520000 90.966881L321.984000 85.900079 +L326.448000 81.398579L330.912000 77.533374L335.376000 74.365420 +L339.840000 71.944677L344.304000 70.309322L348.768000 69.485146 +L353.232000 69.485146L357.696000 70.309322L362.160000 71.944677 +L366.624000 74.365420L371.088000 77.533374L375.552000 81.398579 +L380.016000 85.900079L384.480000 90.966881L388.944000 96.519080 +L393.408000 102.469114L397.872000 108.723148L402.336000 115.182551 +L406.800000 121.745455L411.264000 128.308358L415.728000 134.767761 +L420.192000 141.021795L424.656000 146.971829L429.120000 152.524028 +L433.584000 157.590830L438.048000 162.092330L442.512000 165.957535 +L446.976000 169.125489L451.440000 171.546232L455.904000 173.181587 +L460.368000 174.005763L464.832000 174.005763L469.296000 173.181587 +L473.760000 171.546232L478.224000 169.125489L482.688000 165.957535 +L487.152000 162.092330L491.616000 157.590830L496.080000 152.524028 +L500.544000 146.971829L505.008000 141.021795L509.472000 134.767761 +L513.936000 128.308358"/> +</g> +<g id="line2d2"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" clip-path="url(#pad2bdf97e9fd82d59a5c57b91897f3de)" d="M72.000000 121.745455L76.464000 106.118686L80.928000 91.473805 +L85.392000 78.731004L89.856000 68.690958L94.320000 61.984521 +L98.784000 59.033084L103.248000 60.022096L107.712000 64.889413 +L112.176000 73.329204L116.640000 84.811167L121.104000 98.613846 +L125.568000 113.869970L130.032000 129.620939L134.496000 144.877063 +L138.960000 158.679742L143.424000 170.161705L147.888000 178.601496 +L152.352000 183.468813L156.816000 184.457825L161.280000 181.506388 +L165.744000 174.799951L170.208000 164.759905L174.672000 152.017104 +L179.136000 137.372223L183.600000 121.745455L188.064000 106.118686 +L192.528000 91.473805L196.992000 78.731004L201.456000 68.690958 +L205.920000 61.984521L210.384000 59.033084L214.848000 60.022096 +L219.312000 64.889413L223.776000 73.329204L228.240000 84.811167 +L232.704000 98.613846L237.168000 113.869970L241.632000 129.620939 +L246.096000 144.877063L250.560000 158.679742L255.024000 170.161705 +L259.488000 178.601496L263.952000 183.468813L268.416000 184.457825 +L272.880000 181.506388L277.344000 174.799951L281.808000 164.759905 +L286.272000 152.017104L290.736000 137.372223L295.200000 121.745455 +L299.664000 106.118686L304.128000 91.473805L308.592000 78.731004 +L313.056000 68.690958L317.520000 61.984521L321.984000 59.033084 +L326.448000 60.022096L330.912000 64.889413L335.376000 73.329204 +L339.840000 84.811167L344.304000 98.613846L348.768000 113.869970 +L353.232000 129.620939L357.696000 144.877063L362.160000 158.679742 +L366.624000 170.161705L371.088000 178.601496L375.552000 183.468813 +L380.016000 184.457825L384.480000 181.506388L388.944000 174.799951 +L393.408000 164.759905L397.872000 152.017104L402.336000 137.372223 +L406.800000 121.745455L411.264000 106.118686L415.728000 91.473805 +L420.192000 78.731004L424.656000 68.690958L429.120000 61.984521 +L433.584000 59.033084L438.048000 60.022096L442.512000 64.889413 +L446.976000 73.329204L451.440000 84.811167L455.904000 98.613846 +L460.368000 113.869970L464.832000 129.620939L469.296000 144.877063 +L473.760000 158.679742L478.224000 170.161705L482.688000 178.601496 +L487.152000 183.468813L491.616000 184.457825L496.080000 181.506388 +L500.544000 174.799951L505.008000 164.759905L509.472000 152.017104 +L513.936000 137.372223"/> +</g> +<g id="matplotlib.axis1"> +<g id="xtick1"> +<g id="line2d3"> +<defs><path id="m30e32995789d870ad79a2e54c91cf9c6" d="M0.000000 0.000000L0.000000 -4.000000"/></defs> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="72.000000" y="200.290909"/> +</g></g> +<g id="line2d4"> +<defs><path id="m9281cae24120827b11d5ea8a7ad3e96b" d="M0.000000 0.000000L0.000000 4.000000"/></defs> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="72.000000" y="43.200000"/> +</g></g> +<g id="text1"> +<defs> +<path id="c_7a2040fe3b94fcd41d0a72c84e93b115" d="M31.781250 -66.406250q-7.609375 0.000000 -11.453125 7.500000q-3.828125 7.484375 -3.828125 22.531250q0.000000 14.984375 3.828125 22.484375q3.843750 7.500000 11.453125 7.500000q7.671875 0.000000 11.500000 -7.500000q3.843750 -7.500000 3.843750 -22.484375q0.000000 -15.046875 -3.843750 -22.531250q-3.828125 -7.500000 -11.500000 -7.500000M31.781250 -74.218750q12.265625 0.000000 18.734375 9.703125q6.468750 9.687500 6.468750 28.140625q0.000000 18.406250 -6.468750 28.109375q-6.468750 9.687500 -18.734375 9.687500q-12.250000 0.000000 -18.718750 -9.687500q-6.468750 -9.703125 -6.468750 -28.109375q0.000000 -18.453125 6.468750 -28.140625q6.468750 -9.703125 18.718750 -9.703125"/> +<path id="c_ed3e21196fb739f392806f09ca0594ef" d="M10.687500 -12.406250l10.312500 0.000000l0.000000 12.406250l-10.312500 0.000000z"/> +</defs> +<g style="fill: #000000; opacity: 1.000000" transform="translate(63.250000,213.197159)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick2"> +<g id="line2d5"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="183.600000" y="200.290909"/> +</g></g> +<g id="line2d6"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="183.600000" y="43.200000"/> +</g></g> +<g id="text2"> +<defs> +<path id="c_1260a2df50f305f3db244e29828f968e" d="M10.796875 -72.906250l38.718750 0.000000l0.000000 8.312500l-29.687500 0.000000l0.000000 17.859375q2.140625 -0.734375 4.281250 -1.093750q2.156250 -0.359375 4.312500 -0.359375q12.203125 0.000000 19.328125 6.687500q7.140625 6.687500 7.140625 18.109375q0.000000 11.765625 -7.328125 18.296875q-7.328125 6.515625 -20.656250 6.515625q-4.593750 0.000000 -9.359375 -0.781250q-4.750000 -0.781250 -9.828125 -2.343750l0.000000 -9.921875q4.390625 2.390625 9.078125 3.562500q4.687500 1.171875 9.906250 1.171875q8.453125 0.000000 13.375000 -4.437500q4.937500 -4.437500 4.937500 -12.062500q0.000000 -7.609375 -4.937500 -12.046875q-4.921875 -4.453125 -13.375000 -4.453125q-3.953125 0.000000 -7.890625 0.875000q-3.921875 0.875000 -8.015625 2.734375z"/> +</defs> +<g style="fill: #000000; opacity: 1.000000" transform="translate(174.975000,213.197159)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick3"> +<g id="line2d7"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="295.200000" y="200.290909"/> +</g></g> +<g id="line2d8"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="295.200000" y="43.200000"/> +</g></g> +<g id="text3"> +<defs> +<path id="c_42baa63129a918535c52adb20d687ea7" d="M12.406250 -8.296875l16.109375 0.000000l0.000000 -55.625000l-17.531250 3.515625l0.000000 -8.984375l17.437500 -3.515625l9.859375 0.000000l0.000000 64.609375l16.109375 0.000000l0.000000 8.296875l-41.984375 0.000000z"/> +</defs> +<g style="fill: #000000; opacity: 1.000000" transform="translate(286.707812,213.197159)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick4"> +<g id="line2d9"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="406.800000" y="200.290909"/> +</g></g> +<g id="line2d10"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="406.800000" y="43.200000"/> +</g></g> +<g id="text4"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(398.432812,213.040909)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick5"> +<g id="line2d11"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="518.400000" y="200.290909"/> +</g></g> +<g id="line2d12"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="518.400000" y="43.200000"/> +</g></g> +<g id="text5"> +<defs> +<path id="c_ed3f3ed3ebfbd18bcb9c012009a68ad1" d="M19.187500 -8.296875l34.421875 0.000000l0.000000 8.296875l-46.281250 0.000000l0.000000 -8.296875q5.609375 -5.812500 15.296875 -15.593750q9.703125 -9.796875 12.187500 -12.640625q4.734375 -5.312500 6.609375 -9.000000q1.890625 -3.687500 1.890625 -7.250000q0.000000 -5.812500 -4.078125 -9.468750q-4.078125 -3.671875 -10.625000 -3.671875q-4.640625 0.000000 -9.796875 1.609375q-5.140625 1.609375 -11.000000 4.890625l0.000000 -9.968750q5.953125 -2.390625 11.125000 -3.609375q5.187500 -1.218750 9.484375 -1.218750q11.328125 0.000000 18.062500 5.671875q6.734375 5.656250 6.734375 15.125000q0.000000 4.500000 -1.687500 8.531250q-1.671875 4.015625 -6.125000 9.484375q-1.218750 1.421875 -7.765625 8.187500q-6.531250 6.765625 -18.453125 18.921875"/> +</defs> +<g style="fill: #000000; opacity: 1.000000" transform="translate(509.689062,213.197159)scale(0.120000)"> +<use xlink:href="#c_ed3f3ed3ebfbd18bcb9c012009a68ad1"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +</g> +<g id="matplotlib.axis2"> +<g id="ytick1"> +<g id="line2d13"> +<defs><path id="m3400efa6b1638b3fea9e19e898273957" d="M0.000000 0.000000L4.000000 0.000000"/></defs> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="200.290909"/> +</g></g> +<g id="line2d14"> +<defs><path id="m20b58b2501143cb5e0a5e8f1ef6f1643" d="M0.000000 0.000000L-4.000000 0.000000"/></defs> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="200.290909"/> +</g></g> +<g id="text6"> +<defs> +<path id="c_6a8d56c819c37117ab4cf023bec22a5a" d="M10.593750 -35.500000l62.593750 0.000000l0.000000 8.296875l-62.593750 0.000000z"/> +</defs> +<g style="fill: #000000; opacity: 1.000000" transform="translate(41.156250,204.579972)scale(0.120000)"> +<use xlink:href="#c_6a8d56c819c37117ab4cf023bec22a5a"/> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7" x="83.789062"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="147.412109"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="179.199219"/> +</g> +</g> +</g> +<g id="ytick2"> +<g id="line2d15"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="174.109091"/> +</g></g> +<g id="line2d16"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="174.109091"/> +</g></g> +<g id="text7"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(40.906250,178.476278)scale(0.120000)"> +<use xlink:href="#c_6a8d56c819c37117ab4cf023bec22a5a"/> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7" x="83.789062"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="147.412109"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="179.199219"/> +</g> +</g> +</g> +<g id="ytick3"> +<g id="line2d17"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="147.927273"/> +</g></g> +<g id="line2d18"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="147.927273"/> +</g></g> +<g id="text8"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(41.156250,152.294460)scale(0.120000)"> +<use xlink:href="#c_6a8d56c819c37117ab4cf023bec22a5a"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="83.789062"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="147.412109"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="179.199219"/> +</g> +</g> +</g> +<g id="ytick4"> +<g id="line2d19"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="121.745455"/> +</g></g> +<g id="line2d20"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="121.745455"/> +</g></g> +<g id="text9"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(50.500000,126.112642)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="ytick5"> +<g id="line2d21"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="95.563636"/> +</g></g> +<g id="line2d22"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="95.563636"/> +</g></g> +<g id="text10"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(50.750000,99.930824)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +<g id="ytick6"> +<g id="line2d23"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="69.381818"/> +</g></g> +<g id="line2d24"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="69.381818"/> +</g></g> +<g id="text11"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(51.015625,73.749006)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="ytick7"> +<g id="line2d25"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="43.200000"/> +</g></g> +<g id="line2d26"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="43.200000"/> +</g></g> +<g id="text12"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(51.265625,47.489062)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +</g> +<g id="patch3"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M72.000000 43.200000L518.400000 43.200000"/> +</g> +<g id="patch4"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M518.400000 200.290909L518.400000 43.200000"/> +</g> +<g id="patch5"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M72.000000 200.290909L518.400000 200.290909"/> +</g> +<g id="patch6"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M72.000000 200.290909L72.000000 43.200000"/> +</g> +</g> +<g id="axes2"> +<g id="patch7"> +<path style="fill: #ffffff; opacity: 1.000000" d="M72.000000 388.800000L518.400000 388.800000L518.400000 231.709091 +L72.000000 231.709091L72.000000 388.800000"/> +</g> +<g id="PolyCollection3"> +<defs> +<path id="coll2_0_46fd974f6d18f5a0a68d531beb577700" d="M72.000000 -137.454545L72.000000 -137.454545L76.464000 -145.330030 +L80.928000 -153.081314L85.392000 -160.586154L85.392000 -160.586154 +L85.392000 -189.071887L80.928000 -173.780524L76.464000 -156.206667 +L72.000000 -137.454545z"/> +<path id="coll2_1_8be4f92688f0eba5fa3fdb87085b7f86" d="M112.176000 -194.310587L112.176000 -194.310587L112.508717 -194.527099 +L112.176000 -195.554046z"/> +<path id="coll2_2_20ec3575585369c6307e012db84037fd" d="M183.600000 -137.454545L188.064000 -129.579061L192.528000 -121.827777 +L196.992000 -114.322937L196.992000 -114.322937L196.992000 -189.071887 +L192.528000 -173.780524L188.064000 -156.206667z"/> +<path id="coll2_3_23b0f9263c46c9ceec1f92c96a9227b4" d="M223.776000 -80.598504L223.776000 -80.598504L228.240000 -77.693612 +L232.704000 -75.731187L237.168000 -74.742175L241.632000 -74.742175 +L246.096000 -75.731187L250.560000 -77.693612L254.691283 -80.381992 +L250.560000 -93.133400L246.096000 -109.696616L241.632000 -128.003964 +L237.168000 -146.905127L232.704000 -165.212475L228.240000 -181.775691 +L223.776000 -195.554046z"/> +<path id="coll2_4_e39c3b124eb232f8f64f9f24c1f7a81b" d="M295.200000 -137.454545L299.664000 -145.330030L304.128000 -153.081314 +L308.592000 -160.586154L308.592000 -160.586154L308.592000 -189.071887 +L304.128000 -173.780524L299.664000 -156.206667z"/> +<path id="coll2_5_a3b93d11f806ad2797c2a4e1c65e9be3" d="M335.376000 -194.310587L335.376000 -194.310587L335.708717 -194.527099 +L335.376000 -195.554046z"/> +<path id="coll2_6_48770cc756a14ea59a12220750586725" d="M406.800000 -137.454545L411.264000 -129.579061L415.728000 -121.827777 +L420.192000 -114.322937L420.192000 -114.322937L420.192000 -189.071887 +L415.728000 -173.780524L411.264000 -156.206667z"/> +<path id="coll2_7_66eac2d1cfb76197e93f61741c9bda26" d="M446.976000 -80.598504L446.976000 -80.598504L451.440000 -77.693612 +L455.904000 -75.731187L460.368000 -74.742175L464.832000 -74.742175 +L469.296000 -75.731187L473.760000 -77.693612L477.891283 -80.381992 +L473.760000 -93.133400L469.296000 -109.696616L464.832000 -128.003964 +L460.368000 -146.905127L455.904000 -165.212475L451.440000 -181.775691 +L446.976000 -195.554046z"/> +</defs> +<defs> + <clipPath id="pdceb94b59b302b6d614f8fc54d3b8e04"> +<rect x="72.000000" y="231.709091" width="446.400000" height="157.090909"/> + </clipPath> +</defs><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_0_46fd974f6d18f5a0a68d531beb577700" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_1_8be4f92688f0eba5fa3fdb87085b7f86" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_2_20ec3575585369c6307e012db84037fd" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_3_23b0f9263c46c9ceec1f92c96a9227b4" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_4_e39c3b124eb232f8f64f9f24c1f7a81b" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_5_a3b93d11f806ad2797c2a4e1c65e9be3" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_6_48770cc756a14ea59a12220750586725" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #008000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll2_7_66eac2d1cfb76197e93f61741c9bda26" x="0.000000" y="432.000000"/> +</g></g> +<g id="PolyCollection4"> +<defs> +<path id="coll3_0_94785b50af4b70a86b59016efebda6fa" d="M72.000000 -137.454545L72.000000 -137.454545L72.000000 -137.454545 +L72.000000 -137.454545z"/> +<path id="coll3_1_b89b074290be78a074730e88a9f8da14" d="M112.508717 -194.527099L116.640000 -197.215479L121.104000 -199.177904 +L125.568000 -200.166916L130.032000 -200.166916L134.496000 -199.177904 +L138.960000 -197.215479L143.424000 -194.310587L147.888000 -190.509042 +L152.352000 -185.870796L156.816000 -180.468996L161.280000 -174.388833 +L165.744000 -167.726195L170.208000 -160.586154L174.672000 -153.081314 +L179.136000 -145.330030L183.600000 -137.454545L183.600000 -137.454545 +L183.600000 -137.454545L179.136000 -118.702424L174.672000 -101.128567 +L170.208000 -85.837204L165.744000 -73.789150L161.280000 -65.741426 +L156.816000 -62.199701L152.352000 -63.386515L147.888000 -69.227295 +L143.424000 -79.355045L138.960000 -93.133400L134.496000 -109.696616 +L130.032000 -128.003964L125.568000 -146.905127L121.104000 -165.212475 +L116.640000 -181.775691z"/> +<path id="coll3_2_300df8223ffbe600e5ec6d3660361009" d="M254.691283 -80.381992L255.024000 -80.598504L259.488000 -84.400049 +L263.952000 -89.038295L268.416000 -94.440095L272.880000 -100.520258 +L277.344000 -107.182896L281.808000 -114.322937L286.272000 -121.827777 +L290.736000 -129.579061L295.200000 -137.454545L295.200000 -137.454545 +L295.200000 -137.454545L290.736000 -118.702424L286.272000 -101.128567 +L281.808000 -85.837204L277.344000 -73.789150L272.880000 -65.741426 +L268.416000 -62.199701L263.952000 -63.386515L259.488000 -69.227295 +L255.024000 -79.355045z"/> +<path id="coll3_3_ea9f940b34b4b127ddaeae93dbac851f" d="M335.708717 -194.527099L339.840000 -197.215479L344.304000 -199.177904 +L348.768000 -200.166916L353.232000 -200.166916L357.696000 -199.177904 +L362.160000 -197.215479L366.624000 -194.310587L371.088000 -190.509042 +L375.552000 -185.870796L380.016000 -180.468996L384.480000 -174.388833 +L388.944000 -167.726195L393.408000 -160.586154L397.872000 -153.081314 +L402.336000 -145.330030L406.800000 -137.454545L406.800000 -137.454545 +L406.800000 -137.454545L402.336000 -118.702424L397.872000 -101.128567 +L393.408000 -85.837204L388.944000 -73.789150L384.480000 -65.741426 +L380.016000 -62.199701L375.552000 -63.386515L371.088000 -69.227295 +L366.624000 -79.355045L362.160000 -93.133400L357.696000 -109.696616 +L353.232000 -128.003964L348.768000 -146.905127L344.304000 -165.212475 +L339.840000 -181.775691z"/> +<path id="coll3_4_fca770bf0e4a6dd8e02ca3518b412a67" d="M477.891283 -80.381992L478.224000 -80.598504L482.688000 -84.400049 +L487.152000 -89.038295L491.616000 -94.440095L496.080000 -100.520258 +L500.544000 -107.182896L505.008000 -114.322937L509.472000 -121.827777 +L513.936000 -129.579061L513.936000 -129.579061L513.936000 -118.702424 +L509.472000 -101.128567L505.008000 -85.837204L500.544000 -73.789150 +L496.080000 -65.741426L491.616000 -62.199701L487.152000 -63.386515 +L482.688000 -69.227295L478.224000 -79.355045z"/> +</defs> +<g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll3_0_94785b50af4b70a86b59016efebda6fa" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll3_1_b89b074290be78a074730e88a9f8da14" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll3_2_300df8223ffbe600e5ec6d3660361009" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll3_3_ea9f940b34b4b127ddaeae93dbac851f" x="0.000000" y="432.000000"/> +</g><g clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)"><use style="fill: #ff0000; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#coll3_4_fca770bf0e4a6dd8e02ca3518b412a67" x="0.000000" y="432.000000"/> +</g></g> +<g id="line2d27"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)" d="M72.000000 294.545455L76.464000 286.669970L80.928000 278.918686 +L85.392000 271.413846L89.856000 264.273805L94.320000 257.611167 +L98.784000 251.531004L103.248000 246.129204L107.712000 241.490958 +L112.176000 237.689413L116.640000 234.784521L121.104000 232.822096 +L125.568000 231.833084L130.032000 231.833084L134.496000 232.822096 +L138.960000 234.784521L143.424000 237.689413L147.888000 241.490958 +L152.352000 246.129204L156.816000 251.531004L161.280000 257.611167 +L165.744000 264.273805L170.208000 271.413846L174.672000 278.918686 +L179.136000 286.669970L183.600000 294.545455L188.064000 302.420939 +L192.528000 310.172223L196.992000 317.677063L201.456000 324.817104 +L205.920000 331.479742L210.384000 337.559905L214.848000 342.961705 +L219.312000 347.599951L223.776000 351.401496L228.240000 354.306388 +L232.704000 356.268813L237.168000 357.257825L241.632000 357.257825 +L246.096000 356.268813L250.560000 354.306388L255.024000 351.401496 +L259.488000 347.599951L263.952000 342.961705L268.416000 337.559905 +L272.880000 331.479742L277.344000 324.817104L281.808000 317.677063 +L286.272000 310.172223L290.736000 302.420939L295.200000 294.545455 +L299.664000 286.669970L304.128000 278.918686L308.592000 271.413846 +L313.056000 264.273805L317.520000 257.611167L321.984000 251.531004 +L326.448000 246.129204L330.912000 241.490958L335.376000 237.689413 +L339.840000 234.784521L344.304000 232.822096L348.768000 231.833084 +L353.232000 231.833084L357.696000 232.822096L362.160000 234.784521 +L366.624000 237.689413L371.088000 241.490958L375.552000 246.129204 +L380.016000 251.531004L384.480000 257.611167L388.944000 264.273805 +L393.408000 271.413846L397.872000 278.918686L402.336000 286.669970 +L406.800000 294.545455L411.264000 302.420939L415.728000 310.172223 +L420.192000 317.677063L424.656000 324.817104L429.120000 331.479742 +L433.584000 337.559905L438.048000 342.961705L442.512000 347.599951 +L446.976000 351.401496L451.440000 354.306388L455.904000 356.268813 +L460.368000 357.257825L464.832000 357.257825L469.296000 356.268813 +L473.760000 354.306388L478.224000 351.401496L482.688000 347.599951 +L487.152000 342.961705L491.616000 337.559905L496.080000 331.479742 +L500.544000 324.817104L505.008000 317.677063L509.472000 310.172223 +L513.936000 302.420939"/> +</g> +<g id="line2d28"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" clip-path="url(#pdceb94b59b302b6d614f8fc54d3b8e04)" d="M72.000000 294.545455L76.464000 275.793333L80.928000 258.219476 +L85.392000 242.928113M112.176000 236.445954L116.640000 250.224309 +L121.104000 266.787525L125.568000 285.094873L130.032000 303.996036 +L134.496000 322.303384L138.960000 338.866600L143.424000 352.644955 +L147.888000 362.772705L152.352000 368.613485L156.816000 369.800299 +L161.280000 366.258574L165.744000 358.210850L170.208000 346.162796 +L174.672000 330.871433L179.136000 313.297576L183.600000 294.545455 +L188.064000 275.793333L192.528000 258.219476L196.992000 242.928113 +M223.776000 236.445954L228.240000 250.224309L232.704000 266.787525 +L237.168000 285.094873L241.632000 303.996036L246.096000 322.303384 +L250.560000 338.866600L255.024000 352.644955L259.488000 362.772705 +L263.952000 368.613485L268.416000 369.800299L272.880000 366.258574 +L277.344000 358.210850L281.808000 346.162796L286.272000 330.871433 +L290.736000 313.297576L295.200000 294.545455L299.664000 275.793333 +L304.128000 258.219476L308.592000 242.928113M335.376000 236.445954 +L339.840000 250.224309L344.304000 266.787525L348.768000 285.094873 +L353.232000 303.996036L357.696000 322.303384L362.160000 338.866600 +L366.624000 352.644955L371.088000 362.772705L375.552000 368.613485 +L380.016000 369.800299L384.480000 366.258574L388.944000 358.210850 +L393.408000 346.162796L397.872000 330.871433L402.336000 313.297576 +L406.800000 294.545455L411.264000 275.793333L415.728000 258.219476 +L420.192000 242.928113M446.976000 236.445954L451.440000 250.224309 +L455.904000 266.787525L460.368000 285.094873L464.832000 303.996036 +L469.296000 322.303384L473.760000 338.866600L478.224000 352.644955 +L482.688000 362.772705L487.152000 368.613485L491.616000 369.800299 +L496.080000 366.258574L500.544000 358.210850L505.008000 346.162796 +L509.472000 330.871433L513.936000 313.297576"/> +</g> +<g id="matplotlib.axis3"> +<g id="xtick6"> +<g id="line2d29"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="72.000000" y="388.800000"/> +</g></g> +<g id="line2d30"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="72.000000" y="231.709091"/> +</g></g> +<g id="text13"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(63.250000,401.706250)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick7"> +<g id="line2d31"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="183.600000" y="388.800000"/> +</g></g> +<g id="line2d32"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="183.600000" y="231.709091"/> +</g></g> +<g id="text14"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(174.975000,401.706250)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick8"> +<g id="line2d33"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="295.200000" y="388.800000"/> +</g></g> +<g id="line2d34"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="295.200000" y="231.709091"/> +</g></g> +<g id="text15"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(286.707812,401.706250)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick9"> +<g id="line2d35"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="406.800000" y="388.800000"/> +</g></g> +<g id="line2d36"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="406.800000" y="231.709091"/> +</g></g> +<g id="text16"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(398.432812,401.550000)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +<g id="xtick10"> +<g id="line2d37"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m30e32995789d870ad79a2e54c91cf9c6" x="518.400000" y="388.800000"/> +</g></g> +<g id="line2d38"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m9281cae24120827b11d5ea8a7ad3e96b" x="518.400000" y="231.709091"/> +</g></g> +<g id="text17"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(509.689062,401.706250)scale(0.120000)"> +<use xlink:href="#c_ed3f3ed3ebfbd18bcb9c012009a68ad1"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +</g> +<g id="matplotlib.axis4"> +<g id="ytick8"> +<g id="line2d39"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="388.800000"/> +</g></g> +<g id="line2d40"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="388.800000"/> +</g></g> +<g id="text18"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(41.156250,393.089063)scale(0.120000)"> +<use xlink:href="#c_6a8d56c819c37117ab4cf023bec22a5a"/> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7" x="83.789062"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="147.412109"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="179.199219"/> +</g> +</g> +</g> +<g id="ytick9"> +<g id="line2d41"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="357.381818"/> +</g></g> +<g id="line2d42"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="357.381818"/> +</g></g> +<g id="text19"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(40.906250,361.749006)scale(0.120000)"> +<use xlink:href="#c_6a8d56c819c37117ab4cf023bec22a5a"/> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7" x="83.789062"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="147.412109"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="179.199219"/> +</g> +</g> +</g> +<g id="ytick10"> +<g id="line2d43"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="325.963636"/> +</g></g> +<g id="line2d44"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="325.963636"/> +</g></g> +<g id="text20"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(41.156250,330.330824)scale(0.120000)"> +<use xlink:href="#c_6a8d56c819c37117ab4cf023bec22a5a"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="83.789062"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="147.412109"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="179.199219"/> +</g> +</g> +</g> +<g id="ytick11"> +<g id="line2d45"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="294.545455"/> +</g></g> +<g id="line2d46"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="294.545455"/> +</g></g> +<g id="text21"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(50.500000,298.912642)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +<g id="ytick12"> +<g id="line2d47"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="263.127273"/> +</g></g> +<g id="line2d48"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="263.127273"/> +</g></g> +<g id="text22"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(50.750000,267.494460)scale(0.120000)"> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_1260a2df50f305f3db244e29828f968e" x="95.410156"/> +</g> +</g> +</g> +<g id="ytick13"> +<g id="line2d49"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m3400efa6b1638b3fea9e19e898273957" x="72.000000" y="231.709091"/> +</g></g> +<g id="line2d50"> +<g ><use style="fill: none; stroke: #000000; stroke-width: 0.500000; stroke-linejoin: round; stroke-linecap: butt; opacity: 1.000000" xlink:href="#m20b58b2501143cb5e0a5e8f1ef6f1643" x="518.400000" y="231.709091"/> +</g></g> +<g id="text23"> +<g style="fill: #000000; opacity: 1.000000" transform="translate(51.015625,236.076278)scale(0.120000)"> +<use xlink:href="#c_42baa63129a918535c52adb20d687ea7"/> +<use xlink:href="#c_ed3e21196fb739f392806f09ca0594ef" x="63.623047"/> +<use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="95.410156"/> +</g> +</g> +</g> +</g> +<g id="patch8"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M72.000000 231.709091L518.400000 231.709091"/> +</g> +<g id="patch9"> +<path style="fill: none; stroke: #000000; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" d="M518.400000 388.800000L518.400000 231.709091"/> +</g> +<g id="... [truncated message content]
Revision: 8280 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8280&view=rev Author: mdboom Date: 2010年04月28日 15:08:19 +0000 (2010年4月28日) Log Message: ----------- Fix path simplification -- distance threshold should have been squared. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/offset_points.png trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/polar_axes.png trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_simplification/fft_peaks.png trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_simplification/fft_peaks.svg trunk/matplotlib/lib/matplotlib/tests/test_simplification.py trunk/matplotlib/src/path_converters.h Modified: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/offset_points.png =================================================================== (Binary files differ) Modified: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_axes/polar_axes.png =================================================================== (Binary files differ) Modified: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_simplification/fft_peaks.png =================================================================== (Binary files differ) Modified: trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_simplification/fft_peaks.svg =================================================================== --- trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_simplification/fft_peaks.svg 2010年04月28日 06:44:49 UTC (rev 8279) +++ trunk/matplotlib/lib/matplotlib/tests/baseline_images/test_simplification/fft_peaks.svg 2010年04月28日 15:08:19 UTC (rev 8280) @@ -23,11 +23,12 @@ <clipPath id="p50431ccdcb28178602d99d9270004dde"> <rect x="72.000000" y="43.200000" width="446.400000" height="345.600000"/> </clipPath> -</defs><path style="fill: none; stroke: #0000ff; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" clip-path="url(#p50431ccdcb28178602d99d9270004dde)" d="M72.000000 388.800000L76.145143 388.578724L76.151520 388.455734 -L76.157897 388.474541L76.177029 70.552590L76.489509 388.799636 -L175.303337 388.800000L485.723520 388.493668L485.736274 386.681411 -L485.755406 70.552590L486.067886 388.799652L489.926057 388.800000 -L489.926057 388.800000"/> +</defs><path style="fill: none; stroke: #0000ff; stroke-width: 1.000000; stroke-linejoin: round; stroke-linecap: square; opacity: 1.000000" clip-path="url(#p50431ccdcb28178602d99d9270004dde)" d="M72.000000 388.800000L76.132389 388.704243L76.151520 388.455734 +L76.157897 388.474541L76.170651 262.490246L76.177029 70.552590 +L76.272686 388.786908L76.629806 388.799881L221.059337 388.800000 +L485.704389 388.713691L485.729897 388.401770L485.736274 386.681411 +L485.755406 70.552590L485.844686 388.786149L486.182674 388.799863 +L489.926057 388.800000L489.926057 388.800000"/> </g> <g id="matplotlib.axis1"> </g> Modified: trunk/matplotlib/lib/matplotlib/tests/test_simplification.py =================================================================== --- trunk/matplotlib/lib/matplotlib/tests/test_simplification.py 2010年04月28日 06:44:49 UTC (rev 8279) +++ trunk/matplotlib/lib/matplotlib/tests/test_simplification.py 2010年04月28日 15:08:19 UTC (rev 8280) @@ -69,7 +69,7 @@ path = transform.transform_path(path) simplified = list(path.iter_segments(simplify=(800, 600))) - assert len(simplified) == 2675 + assert len(simplified) == 3884 def test_sine_plus_noise(): np.random.seed(0) @@ -86,7 +86,7 @@ path = transform.transform_path(path) simplified = list(path.iter_segments(simplify=(800, 600))) - assert len(simplified) == 628 + assert len(simplified) == 876 @image_comparison(baseline_images=['simplify_curve']) def test_simplify_curve(): @@ -131,7 +131,7 @@ path = transform.transform_path(path) simplified = list(path.iter_segments(simplify=(800, 600))) - assert len(simplified) == 13 + assert len(simplified) == 17 def test_start_with_moveto(): # Should be entirely clipped away to a single MOVETO Modified: trunk/matplotlib/src/path_converters.h =================================================================== --- trunk/matplotlib/src/path_converters.h 2010年04月28日 06:44:49 UTC (rev 8279) +++ trunk/matplotlib/src/path_converters.h 2010年04月28日 15:08:19 UTC (rev 8280) @@ -477,7 +477,7 @@ /* Set simplify to true to perform simplification */ PathSimplifier(VertexSource& source, bool do_simplify, double simplify_threshold) : m_source(&source), m_simplify(do_simplify), - m_simplify_threshold(simplify_threshold), + m_simplify_threshold(simplify_threshold*simplify_threshold), m_moveto(true), m_after_moveto(false), m_lastx(0.0), m_lasty(0.0), m_clipped(false), m_origdx(0.0), m_origdy(0.0), This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
Revision: 8279 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8279&view=rev Author: efiring Date: 2010年04月28日 06:44:49 +0000 (2010年4月28日) Log Message: ----------- contourf_demo: illustrate use of set_under and set_over with contourf colors kw Modified Paths: -------------- trunk/matplotlib/examples/pylab_examples/contourf_demo.py Modified: trunk/matplotlib/examples/pylab_examples/contourf_demo.py =================================================================== --- trunk/matplotlib/examples/pylab_examples/contourf_demo.py 2010年04月27日 20:30:53 UTC (rev 8278) +++ trunk/matplotlib/examples/pylab_examples/contourf_demo.py 2010年04月28日 06:44:49 UTC (rev 8279) @@ -61,10 +61,16 @@ # Now make a contour plot with the levels specified, # and with the colormap generated automatically from a list # of colors. -levels = [-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5] +levels = [-1.5, -1, -0.5, 0, 0.5, 1] CS3 = contourf(X, Y, Z, levels, colors = ('r', 'g', 'b'), - origin=origin) + origin=origin, + extend='both') +# Our data range extends outside the range of levels; make +# data below the lowest contour level yellow, and above the +# highest level cyan: +CS3.cmap.set_under('yellow') +CS3.cmap.set_over('cyan') CS4 = contour(X, Y, Z, levels, colors = ('k',), @@ -72,6 +78,9 @@ origin = origin) title('Listed colors (3 masked regions)') clabel(CS4, fmt = '%2.1f', colors = 'w', fontsize=14) + +# Notice that the colorbar command gets all the information it +# needs from the ContourSet object, CS3. colorbar(CS3) show() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.