From 951fabef7f2f997de48abd4d37fc2ec6169fc68f Mon Sep 17 00:00:00 2001 From: Antara P <63465565+antarapal235@users.noreply.github.com> Date: Wed, 7 Dec 2022 15:40:33 -0500 Subject: [PATCH 1/9] Add Axes.fill_disjoint --- lib/matplotlib/axes/_axes.py | 194 +++++++++++++++++- lib/matplotlib/patches.py | 117 +++++++++++ lib/matplotlib/pyplot.py | 10 + .../test_axes/fill_disjoint.png | Bin 0 -> 26402 bytes lib/matplotlib/tests/test_axes.py | 24 +++ lib/matplotlib/tests/test_patches.py | 52 ++++- test.png | Bin 0 -> 13664 bytes tools/boilerplate.py | 1 + 8 files changed, 393 insertions(+), 5 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.png create mode 100644 test.png diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index cd0660470c2c..847dc766282c 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -5219,9 +5219,8 @@ def fill(self, *args, data=None, **kwargs): self._request_autoscale_view() return patches - def _fill_between_x_or_y( - self, ind_dir, ind, dep1, dep2=0, *, - where=None, interpolate=False, step=None, **kwargs): + def _fill_between_x_or_y(self, ind_dir, ind, dep1, dep2=0, *, where=None, + interpolate=False, step=None, **kwargs): # Common implementation between fill_between (*ind_dir*="x") and # fill_betweenx (*ind_dir*="y"). *ind* is the independent variable, # *dep* the dependent variable. The docstring below is interpolated @@ -5440,6 +5439,195 @@ def fill_betweenx(self, y, x1, x2=0, where=None, #### plotting z(x, y): imshow, pcolor and relatives, contour + def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, + interpolate=False, step=None, **kwargs): + ind_dir = "y" + dep_dir = "x" + + if not mpl.rcParams["_internal.classic_mode"]: + kwargs = cbook.normalize_kwargs(kwargs, mcoll.Collection) + if not any(c in kwargs for c in ("color", "facecolor")): + kwargs["facecolor"] = \ + self._get_patches_for_fill.get_next_color() + + ind, dep1, dep2 = map( + ma.masked_invalid, self._process_unit_info( + [(ind_dir, ind), (dep_dir, dep1), (dep_dir, dep2)], kwargs)) + + for name, array in [ + (ind_dir, ind), (f"{dep_dir}1", dep1), (f"{dep_dir}2", dep2)]: + if array.ndim > 1: + raise ValueError(f"{name!r} is not 1-dimensional") + + if where is None: + where = True + else: + where = np.asarray(where, dtype=bool) + if where.size != ind.size: + raise ValueError(f"where size ({where.size}) does not match " + f"{ind_dir} size ({ind.size})") + where = where & ~functools.reduce( + np.logical_or, map(np.ma.getmaskarray, [ind, dep1, dep2])) + + ind, dep1, dep2 = np.broadcast_arrays( + np.atleast_1d(ind), dep1, dep2, subok=True) + + ret = [] + for idx0, idx1 in cbook.contiguous_regions(where): + indslice = ind[idx0:idx1] + dep1slice = dep1[idx0:idx1] + dep2slice = dep2[idx0:idx1] + + if step is not None: + step_func = cbook.STEP_LOOKUP_MAP["steps-" + step] + indslice, dep1slice, dep2slice = \ + step_func(indslice, dep1slice, dep2slice) + + if not len(indslice): + continue + + if interpolate: + N = len(indslice) + xslices = np.stack([indslice, dep1slice, dep2slice], axis=-1) + xslices = list(map(tuple, xslices)) + xslices.sort() + + ind_interps = [] + dep_interps = [] + for i in range(N-1): + # sliding window + # [[dep1[i], dep2[i+1]], + # [dep2[i], dep2[i+1]], + # [ind[i], ind[i+1]]] + + cur_slice = xslices[i] + next_slice = xslices[i+1] + + d1 = cur_slice[1] - cur_slice[2] + d2 = next_slice[1] - next_slice[2] + dx = next_slice[0] - cur_slice[0] + + if dx == 0: + # multiple ind with same value + pass + + if (d1 > 0) == (d2 > 0): + continue + if (d1 == 0) or (d2 == 0): + continue + + # calculate intersect pt + r = -d2/d1 + ind_interps.append((next_slice[0] + r*cur_slice[0])/(1+r)) + dep_interps.append((next_slice[1] + r*cur_slice[1])/(1+r)) + + indslice = np.concatenate([indslice, ind_interps]) + dep1slice = np.concatenate([dep1slice, dep_interps]) + dep2slice = np.concatenate([dep2slice, dep_interps]) + + N = len(indslice) + temp = np.stack([dep1slice, dep2slice]) + + vertices_above = np.zeros((N, 2)) + vertices_below = np.zeros((N, 2)) + + vertices_above[0:N, 0] = indslice + vertices_below[0:N, 0] = indslice + + vertices_above[0:N, 1] = np.amax(temp, axis=0) + vertices_below[0:N, 1] = np.amin(temp, axis=0) + + line_above = mpatches.Lines(vertices_above, direction=True, + **kwargs) + line_below = mpatches.Lines(vertices_below, direction=False, + **kwargs) + + self.add_artist(line_above) + self.add_artist(line_below) + + ret.append(line_above) + ret.append(line_below) + + # now update the datalim and autoscale + pts = np.row_stack([np.column_stack([ind[where], dep1[where]]), + np.column_stack([ind[where], dep2[where]])]) + pts = pts[:, ::-1] + self.update_datalim(pts, updatex=True, updatey=True) + self._request_autoscale_view() + return ret + + def fill_disjoint(self, x, y1, y2, where=None, interpolate=False, + step=None, **kwargs): + """ + Dill everything not in between the lines *y1* and *y2* + + Parameters + ---------- + x : array (length N) + The x coordinates of the nodes defining the curves. + + y1 : array (length N) or scalar + The y coordinates of the nodes defining the first curve. + + y2 : array (length N) or scalar: default 0 + The y coordinates of the nodes defining the second curve. + + where : array of bool (length N), optional + Define *where* to exclude some regions from being filled. + The filled regions are defined by the coordinates ``x[where]``. + More precisely, fill between ``x[i]`` and ``x[i+1]`` if + ``where[i] and where[i+1]``. Note that this definition implies + that an isolated *True* value between two *False* values in *where* + will not result in filling. Both sides of the *True* position + remain unfilled due to the adjacent *False* values. + + interpolate : bool, default: False + This option is only relevant if *where* is used and the two curves + are crossing each other. + + Semantically, *where* is often used for *y1* > *y2* or + similar. By default, the nodes of the polygon defining the in + between region will only be placed at the positions in the *x* + array. Such a polygon cannot describe the above semantics close to + the intersection. The x-sections containing the intersection are + simply clipped. + + Setting *interpolate* to *True* will calculate the actual + intersection point and extend the filled region up to this point. + + step : {{'pre', 'post', 'mid'}}, optional + Define *step* if the filling should be a step function, + i.e. constant in between *x*. The value determines where the + step will occur: + + - 'pre': The y value is continued constantly to the left from + every *x* position, i.e. the interval ``(x[i-1], x[i]]`` has the + value ``y[i]``. + - 'post': The y value is continued constantly to the right from + every *x* position, i.e. the interval ``[x[i], x[i+1])`` has the + value ``y[i]``. + - 'mid': Steps occur half-way between the *x* positions. + + Other Parameters + ---------------- + **kwargs + All other keyword arguments are passed on to `.Lines`. + %(Lines:kwdoc)s + + Returns + ------- + list of `.Lines` + A list `.Lines` containing the plotted Lines. + + See Also + -------- + fill_between : Fill between two sets of y-values. + fill_betweenx : Fill between two sets of x-values. + """ + return (self._fill_above_or_below(x, y1, y2, where=where, + interpolate=interpolate, step=step, + **kwargs)) + @_preprocess_data() @_docstring.interpd def imshow(self, X, cmap=None, norm=None, *, aspect=None, diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index f127ab20a97b..5ce62c3346e6 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -1066,6 +1066,123 @@ def set_data(self, values=None, edges=None, baseline=None): self.stale = True +class Lines(Patch): + """A semiplane bounded by a polyline on one side.""" + def __str__(self): + if len(self._path.vertices): + s = "Line%d((%g, %g) ...)" + return s % (len(self._path.vertices), *self._path.vertices[0]) + else: + return "Line0()" + + @_docstring.dedent_interpd + def __init__(self, xy, direction, **kwargs): + """ + *xy* is a numpy array with shape Nx2. + + If *direction* is *True*, the patch is lower bounded by the polyline. + Otherwise, it ish upper bounded by the polyline + """ + super().__init__(**kwargs) + self.set_direction(direction) + self.set_polyline(xy) + self._update_bounded_path() + + def set_direction(self, direction): + """ + Set the direction of the patch's bound. + + Parameters + ---------- + direction : bool + *True* if lower bounded, *False* otherwise + """ + self.direction = bool(direction) + self.stale = True + + def get_direction(self): + """ + Get the direction of the patch's bound. + + Returns + ------- + bool + """ + return self.direction + + def set_polyline(self, xy): + """ + Set the vertices of the polyline. + + Parameters + ---------- + xy : (N, 2) array-like + The vertices of polyline. + + Notes + ----- + *xy* is stably sorted by *x* first before setting the polyline + """ + # Convert to tuple for structured sort + xy = np.asarray(xy) + sorted_idxs = np.argsort(xy[:, 0], kind='stable') + xy = xy[sorted_idxs] + self._polyline = xy + self.stale = True + + def get_polyline(self): + """ + Get the bounding polyline. + + Returns + ------- + (N, 2) numpy array + The vertices of polyline. + """ + return self._polyline + + def get_path(self): + """ + Get the `.Path` of the patch. + + Returns + ------- + `.Path` + + Notes + ----- + Returns the `.Path` defined by the bounding polyline if there is no + containing `.Axes`. Otherwise, the path is defined by the polyline, and + two extra endpoints from projecting the polyline's endpoints to the + bound of the axes container. + """ + self._update_bounded_path() + return self._path + + def _update_bounded_path(self): + """ + Updates the bounded path according to the container limits + """ + container = self.axes + if container is None: + self._path = Path(self._polyline) + return + + bottom, top = container.get_ylim() + bound = top if self.direction else bottom + + N, _ = self._polyline.shape + left_x = self._polyline[0, 0] + right_x = self._polyline[N-1, 0] + verts = np.empty((N+2, 2)) + + verts[1:N+1] = self._polyline + verts[0] = [left_x, bound] + verts[N+1] = [right_x, bound] + + self._path = Path(verts) + + class Polygon(Patch): """A general polygon patch.""" diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 79c33a6bacb6..1688fc2f0619 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -2565,6 +2565,16 @@ def fill_betweenx( **({"data": data} if data is not None else {}), **kwargs) +# Autogenerated by boilerplate.py. Do not edit as changes will be lost. +@_copy_docstring_and_deprecators(Axes.fill_disjoint) +def fill_disjoint( + y, x1, x2, where=None, interpolate=False, step=None, + **kwargs): + return gca().fill_disjoint( + y, x1, x2, where=where, interpolate=interpolate, step=step, + **kwargs) + + # Autogenerated by boilerplate.py. Do not edit as changes will be lost. @_copy_docstring_and_deprecators(Axes.grid) def grid(visible=None, which='major', axis='both', **kwargs): diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.png b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.png new file mode 100644 index 0000000000000000000000000000000000000000..638152991c9e6b68122bea618cba8588d2873e3c GIT binary patch literal 26402 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 170605eb1bb6..727043534269 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -45,6 +45,30 @@ # different baseline images to prevent race conditions when pytest runs # the tests with multiple threads. +@image_comparison(['fill_disjoint'], remove_text=False) +def test_fill_disjoint(): + # True test + def f1(x): return 32.0 * x + 2.0 + def f2(x): return -55.0 * x + def fLo(x): return -100 + def fHi(x): return 100 + def fMin(x): return min(f1(x), f2(x)) + def fMax(x): return max(f1(x), f2(x)) + xRng=np.linspace(-1, 1, 100) + fig, ax = plt.subplots() + plt.plot(xRng, [f1(x) for x in xRng], 'b-') + plt.plot(xRng, [f2(x) for x in xRng], 'r-') + # Uncomment below line to test other configs + # plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng]) + + # Test with limits set on axes - uncomment below to use + # ax.set_xlim(xRng.min(), xRng.max()) + # ax.set_ylim(-100, 100) + # plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng]) + + # Baseline generation - uncomment below to use + plt.fill_between(xRng, [fMin(x) for x in xRng], [fLo(x) for x in xRng], color='g') + plt.fill_between(xRng, [fMax(x) for x in xRng], [fHi(x) for x in xRng], color='g') @check_figures_equal(extensions=["png"]) def test_invisible_axes(fig_test, fig_ref): diff --git a/lib/matplotlib/tests/test_patches.py b/lib/matplotlib/tests/test_patches.py index 45bd6b4b06fc..52a88173d2ed 100644 --- a/lib/matplotlib/tests/test_patches.py +++ b/lib/matplotlib/tests/test_patches.py @@ -6,8 +6,9 @@ import pytest import matplotlib as mpl -from matplotlib.patches import (Annulus, Ellipse, Patch, Polygon, Rectangle, - FancyArrowPatch, FancyArrow, BoxStyle, Arc) +from matplotlib.patches import (Annulus, Ellipse, Lines, Patch, Polygon, + Rectangle, FancyArrowPatch, FancyArrow, + BoxStyle, Arc) from matplotlib.testing.decorators import image_comparison, check_figures_equal from matplotlib.transforms import Bbox import matplotlib.pyplot as plt @@ -19,6 +20,53 @@ on_win = (sys.platform == 'win32') +def test_Lines_set_direction(): + xy = [(0, 0), (0, 1), (1, 1)] + l = Lines(xy, True) + l.stale = False + l.set_direction(False) + assert l.stale + assert not l.direction + + +def test_Lines_get_direction(): + xy = [(0, 0), (0, 1), (1, 1)] + l = Lines(xy, True) + assert l.get_direction() + + +def test_Lines_get_xy(): + xy = [(0, 0), (0, 1), (1, 1)] + l = Lines(xy, True) + l.set_polyline(xy) + assert_array_equal(l.get_polyline(), [[0, 0], [0, 1], [1, 1]]) + + +def test_Lines_update_bounded_path(): + xy = [(0, 0), (0, 1), (1, 1)] + _, ax = plt.subplots() + plt.ylim(0, 6) + plt.xlim(0, 6) + + l_top = Lines(xy, True) + ax.add_patch(l_top) + xy1 = np.array([[2, 2], [3, 3], [4, 4]]) + l_top._polyline = xy1 + l_top._update_bounded_path() + assert_array_equal(l_top._path.vertices, [[2, 6], [2, 2], [3, 3], [4, 4], + [4, 6]]) + + +def test_Lines_set_xy(): + xy = [[1, 1], [0, 1], [0, 0]] + xy_sorted = np.array([[0, 1], [0, 0], [1, 1]]) + l = Lines(xy, True) + + l.set_polyline(xy) + assert_array_equal(l._polyline, xy_sorted) + assert l.stale + + def test_Polygon_close(): #: GitHub issue #1018 identified a bug in the Polygon handling #: of the closed attribute; the path was not getting closed diff --git a/test.png b/test.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b0a59f9fcdd3526c9f41c3c1c2ce86d728cf02 GIT binary patch literal 13664 zcmeHucQ}^q|Nn(h$|^-9nn*<1vPxv{ku79p?-f!~8HJL)$(E5liYPK~+$Ae}@6FBc zeR+C5pXWJ_@9{f+|Nf5S`^R(KPuF#w=lPzm_c-64E6PiflF*VM2tq1#S6mrE@O=;j zZ|E=)JmK!>8-*V=$2*#iDmD)sT@39_5II9f+lMxe56$m0I-A%#nA=!$uye9=up65= zb8⩔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 literal 0 HcmV?d00001 diff --git a/tools/boilerplate.py b/tools/boilerplate.py index 0b00d7a12b4a..5b2c4608f977 100644 --- a/tools/boilerplate.py +++ b/tools/boilerplate.py @@ -251,6 +251,7 @@ def boilerplate_gen(): 'fill', 'fill_between', 'fill_betweenx', + 'fill_disjoint', 'grid', 'hexbin', 'hist', From 3fdec9261b8fb14ecbd9f0069ae1a41ea012b1f4 Mon Sep 17 00:00:00 2001 From: Jason Perez Date: Thu, 15 Dec 2022 18:01:48 -0500 Subject: [PATCH 2/9] Removed test.png and updated test_fill_disjoint function by removing baseline generation code --- lib/matplotlib/tests/test_axes.py | 16 ++++------------ test.png | Bin 13664 -> 0 bytes 2 files changed, 4 insertions(+), 12 deletions(-) delete mode 100644 test.png diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 727043534269..dd565cb7f3cb 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -45,7 +45,8 @@ # different baseline images to prevent race conditions when pytest runs # the tests with multiple threads. -@image_comparison(['fill_disjoint'], remove_text=False) + +@image_comparison(['fill_disjoint.png'], remove_text=False, style='mpl20') def test_fill_disjoint(): # True test def f1(x): return 32.0 * x + 2.0 @@ -54,21 +55,12 @@ def fLo(x): return -100 def fHi(x): return 100 def fMin(x): return min(f1(x), f2(x)) def fMax(x): return max(f1(x), f2(x)) - xRng=np.linspace(-1, 1, 100) + xRng = np.linspace(-1, 1, 100) fig, ax = plt.subplots() plt.plot(xRng, [f1(x) for x in xRng], 'b-') plt.plot(xRng, [f2(x) for x in xRng], 'r-') - # Uncomment below line to test other configs - # plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng]) - - # Test with limits set on axes - uncomment below to use - # ax.set_xlim(xRng.min(), xRng.max()) - # ax.set_ylim(-100, 100) - # plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng]) + plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng]) - # Baseline generation - uncomment below to use - plt.fill_between(xRng, [fMin(x) for x in xRng], [fLo(x) for x in xRng], color='g') - plt.fill_between(xRng, [fMax(x) for x in xRng], [fHi(x) for x in xRng], color='g') @check_figures_equal(extensions=["png"]) def test_invisible_axes(fig_test, fig_ref): diff --git a/test.png b/test.png deleted file mode 100644 index d3b0a59f9fcdd3526c9f41c3c1c2ce86d728cf02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13664 zcmeHucQ}^q|Nn(h$|^-9nn*<1vPxv{ku79p?-f!~8HJL)$(E5liYPK~+$Ae}@6FBc zeR+C5pXWJ_@9{f+|Nf5S`^R(KPuF#w=lPzm_c-64E6PiflF*VM2tq1#S6mrE@O=;j zZ|E=)JmK!>8-*V=$2*#iDmD)sT@39_5II9f+lMxe56$m0I-A%#nA=!$uye9=up65= zb8⩔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 From c9fb023863414bb0f9539f1ac74f2f02b750ed57 Mon Sep 17 00:00:00 2001 From: Antara P <63465565+antarapal235@users.noreply.github.com> Date: Thu, 15 Dec 2022 18:32:33 -0500 Subject: [PATCH 3/9] Update lib/matplotlib/axes/_axes.py Co-authored-by: Oscar Gustafsson --- lib/matplotlib/axes/_axes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 847dc766282c..a053de4984d4 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -5559,7 +5559,7 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, def fill_disjoint(self, x, y1, y2, where=None, interpolate=False, step=None, **kwargs): """ - Dill everything not in between the lines *y1* and *y2* + Fill everything not in between the lines *y1* and *y2* Parameters ---------- From dc714aa0bd4cdc6c4eb72085af9b004b0a188405 Mon Sep 17 00:00:00 2001 From: Antara P <63465565+antarapal235@users.noreply.github.com> Date: Thu, 15 Dec 2022 18:32:44 -0500 Subject: [PATCH 4/9] Update lib/matplotlib/axes/_axes.py Co-authored-by: Oscar Gustafsson --- lib/matplotlib/axes/_axes.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index a053de4984d4..d6502f6ea61b 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -5624,9 +5624,9 @@ def fill_disjoint(self, x, y1, y2, where=None, interpolate=False, fill_between : Fill between two sets of y-values. fill_betweenx : Fill between two sets of x-values. """ - return (self._fill_above_or_below(x, y1, y2, where=where, - interpolate=interpolate, step=step, - **kwargs)) + return self._fill_above_or_below(x, y1, y2, where=where, + interpolate=interpolate, step=step, + **kwargs) @_preprocess_data() @_docstring.interpd From fb2022b4a2063c631faf2f050acc9f72f38d29e5 Mon Sep 17 00:00:00 2001 From: Antara P <63465565+antarapal235@users.noreply.github.com> Date: Thu, 15 Dec 2022 18:32:54 -0500 Subject: [PATCH 5/9] Update lib/matplotlib/patches.py Co-authored-by: Oscar Gustafsson --- lib/matplotlib/patches.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 5ce62c3346e6..6909391ab534 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -1081,7 +1081,7 @@ def __init__(self, xy, direction, **kwargs): *xy* is a numpy array with shape Nx2. If *direction* is *True*, the patch is lower bounded by the polyline. - Otherwise, it ish upper bounded by the polyline + Otherwise, it is upper bounded by the polyline """ super().__init__(**kwargs) self.set_direction(direction) From 2400d92252f4b05a013004390b434d4e0238d9d1 Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Sun, 18 Dec 2022 17:30:45 -0500 Subject: [PATCH 6/9] change Lines to BoundedSemiplane and the property direction from boolean to {'top', 'bottom'} --- lib/matplotlib/axes/_axes.py | 9 ++--- lib/matplotlib/patches.py | 25 +++++++----- lib/matplotlib/pyplot.py | 4 +- .../test_axes/fill_disjoint.png | Bin 26402 -> 15011 bytes lib/matplotlib/tests/test_axes.py | 7 +++- lib/matplotlib/tests/test_patches.py | 38 +++++++++--------- 6 files changed, 45 insertions(+), 38 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index d6502f6ea61b..6612097c4abd 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -5537,10 +5537,10 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, vertices_above[0:N, 1] = np.amax(temp, axis=0) vertices_below[0:N, 1] = np.amin(temp, axis=0) - line_above = mpatches.Lines(vertices_above, direction=True, - **kwargs) - line_below = mpatches.Lines(vertices_below, direction=False, - **kwargs) + line_above = mpatches.BoundedSemiplane(vertices_above, 'bottom', + **kwargs) + line_below = mpatches.BoundedSemiplane(vertices_below, 'top', + **kwargs) self.add_artist(line_above) self.add_artist(line_below) @@ -5551,7 +5551,6 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, # now update the datalim and autoscale pts = np.row_stack([np.column_stack([ind[where], dep1[where]]), np.column_stack([ind[where], dep2[where]])]) - pts = pts[:, ::-1] self.update_datalim(pts, updatex=True, updatey=True) self._request_autoscale_view() return ret diff --git a/lib/matplotlib/patches.py b/lib/matplotlib/patches.py index 6909391ab534..e72f63ea137c 100644 --- a/lib/matplotlib/patches.py +++ b/lib/matplotlib/patches.py @@ -1066,7 +1066,7 @@ def set_data(self, values=None, edges=None, baseline=None): self.stale = True -class Lines(Patch): +class BoundedSemiplane(Patch): """A semiplane bounded by a polyline on one side.""" def __str__(self): if len(self._path.vertices): @@ -1080,8 +1080,7 @@ def __init__(self, xy, direction, **kwargs): """ *xy* is a numpy array with shape Nx2. - If *direction* is *True*, the patch is lower bounded by the polyline. - Otherwise, it is upper bounded by the polyline + *direction* determines bounding direction of the semiplane """ super().__init__(**kwargs) self.set_direction(direction) @@ -1094,10 +1093,13 @@ def set_direction(self, direction): Parameters ---------- - direction : bool - *True* if lower bounded, *False* otherwise + direction : {{'top', 'bottom'}} + - 'top': Semiplane is upper bounded by the specified polyline + - 'bottom': Semiplane is lower bounded by the specified polyline """ - self.direction = bool(direction) + if direction not in ['top', 'bottom']: + raise ValueError(f"{direction!r} is not 'top' or 'bottom'") + self._direction = direction self.stale = True def get_direction(self): @@ -1106,9 +1108,9 @@ def get_direction(self): Returns ------- - bool + {{'top', 'bottom'}} """ - return self.direction + return self._direction def set_polyline(self, xy): """ @@ -1121,9 +1123,9 @@ def set_polyline(self, xy): Notes ----- - *xy* is stably sorted by *x* first before setting the polyline + *xy* is stably sorted by *x* first before setting the polyline. This is + to ensure the fill does not cover any vertices. """ - # Convert to tuple for structured sort xy = np.asarray(xy) sorted_idxs = np.argsort(xy[:, 0], kind='stable') xy = xy[sorted_idxs] @@ -1169,7 +1171,8 @@ def _update_bounded_path(self): return bottom, top = container.get_ylim() - bound = top if self.direction else bottom + bound_dict = {'top': bottom, 'bottom': top} + bound = bound_dict[self._direction] N, _ = self._polyline.shape left_x = self._polyline[0, 0] diff --git a/lib/matplotlib/pyplot.py b/lib/matplotlib/pyplot.py index 1688fc2f0619..f581baf71939 100644 --- a/lib/matplotlib/pyplot.py +++ b/lib/matplotlib/pyplot.py @@ -2568,10 +2568,10 @@ def fill_betweenx( # Autogenerated by boilerplate.py. Do not edit as changes will be lost. @_copy_docstring_and_deprecators(Axes.fill_disjoint) def fill_disjoint( - y, x1, x2, where=None, interpolate=False, step=None, + x, y1, y2, where=None, interpolate=False, step=None, **kwargs): return gca().fill_disjoint( - y, x1, x2, where=where, interpolate=interpolate, step=step, + x, y1, y2, where=where, interpolate=interpolate, step=step, **kwargs) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.png b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.png index 638152991c9e6b68122bea618cba8588d2873e3c..eeeed9cedf437144fe35b5e015701411c7e479c3 100644 GIT binary patch literal 15011 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 diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index dd565cb7f3cb..2c62ef58ff16 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -59,7 +59,12 @@ def fMax(x): return max(f1(x), f2(x)) fig, ax = plt.subplots() plt.plot(xRng, [f1(x) for x in xRng], 'b-') plt.plot(xRng, [f2(x) for x in xRng], 'r-') - plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng]) + plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng], + color='g') + plt.xlim(-1, 1) + plt.ylim(-100, 100) + plt.xticks([]) + plt.yticks([]) @check_figures_equal(extensions=["png"]) diff --git a/lib/matplotlib/tests/test_patches.py b/lib/matplotlib/tests/test_patches.py index 52a88173d2ed..f2fcf4eb51ea 100644 --- a/lib/matplotlib/tests/test_patches.py +++ b/lib/matplotlib/tests/test_patches.py @@ -6,9 +6,9 @@ import pytest import matplotlib as mpl -from matplotlib.patches import (Annulus, Ellipse, Lines, Patch, Polygon, - Rectangle, FancyArrowPatch, FancyArrow, - BoxStyle, Arc) +from matplotlib.patches import (Annulus, Ellipse, BoundedSemiplane, Patch, + Polygon, Rectangle, FancyArrowPatch, + FancyArrow, BoxStyle, Arc) from matplotlib.testing.decorators import image_comparison, check_figures_equal from matplotlib.transforms import Bbox import matplotlib.pyplot as plt @@ -20,47 +20,47 @@ on_win = (sys.platform == 'win32') -def test_Lines_set_direction(): +def test_BoundedSemiplane_set_direction(): xy = [(0, 0), (0, 1), (1, 1)] - l = Lines(xy, True) + l = BoundedSemiplane(xy, 'bottom') l.stale = False - l.set_direction(False) + l.set_direction('top') assert l.stale - assert not l.direction + assert l._direction == 'top' -def test_Lines_get_direction(): +def test_BoundedSemiplane_get_direction(): xy = [(0, 0), (0, 1), (1, 1)] - l = Lines(xy, True) + l = BoundedSemiplane(xy, 'bottom') assert l.get_direction() -def test_Lines_get_xy(): +def test_BoundedSemiplane_get_xy(): xy = [(0, 0), (0, 1), (1, 1)] - l = Lines(xy, True) + l = BoundedSemiplane(xy, 'bottom') l.set_polyline(xy) assert_array_equal(l.get_polyline(), [[0, 0], [0, 1], [1, 1]]) -def test_Lines_update_bounded_path(): +def test_BoundedSemiplane_update_bounded_path(): xy = [(0, 0), (0, 1), (1, 1)] _, ax = plt.subplots() plt.ylim(0, 6) plt.xlim(0, 6) - l_top = Lines(xy, True) - ax.add_patch(l_top) + l_bottom = BoundedSemiplane(xy, 'bottom') + ax.add_patch(l_bottom) xy1 = np.array([[2, 2], [3, 3], [4, 4]]) - l_top._polyline = xy1 - l_top._update_bounded_path() - assert_array_equal(l_top._path.vertices, [[2, 6], [2, 2], [3, 3], [4, 4], - [4, 6]]) + l_bottom._polyline = xy1 + l_bottom._update_bounded_path() + assert_array_equal(l_bottom._path.vertices, [[2, 6], [2, 2], [3, 3], + [4, 4], [4, 6]]) def test_Lines_set_xy(): xy = [[1, 1], [0, 1], [0, 0]] xy_sorted = np.array([[0, 1], [0, 0], [1, 1]]) - l = Lines(xy, True) + l = BoundedSemiplane(xy, 'top') l.set_polyline(xy) assert_array_equal(l._polyline, xy_sorted) From c92bcad61a882fa8ea12bdc156872f1c55c795ce Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Sun, 18 Dec 2022 19:10:02 -0500 Subject: [PATCH 7/9] Add tests for optional keywords for fill_disjoint --- lib/matplotlib/tests/test_axes.py | 73 +++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 2c62ef58ff16..58e2b329f763 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -46,25 +46,82 @@ # the tests with multiple threads. -@image_comparison(['fill_disjoint.png'], remove_text=False, style='mpl20') +@image_comparison(['fill_disjoint'], remove_text=True, style='mpl20') def test_fill_disjoint(): # True test def f1(x): return 32.0 * x + 2.0 def f2(x): return -55.0 * x - def fLo(x): return -100 - def fHi(x): return 100 - def fMin(x): return min(f1(x), f2(x)) - def fMax(x): return max(f1(x), f2(x)) xRng = np.linspace(-1, 1, 100) - fig, ax = plt.subplots() plt.plot(xRng, [f1(x) for x in xRng], 'b-') plt.plot(xRng, [f2(x) for x in xRng], 'r-') plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng], color='g') plt.xlim(-1, 1) plt.ylim(-100, 100) - plt.xticks([]) - plt.yticks([]) + + +@image_comparison(['fill_disjoint_interpolate'], remove_text=True, + style='mpl20') +def test_fill_disjoint_interpolate(): + x = np.arange(0.0, 2, 0.02) + y1 = np.sin(2*np.pi*x) + y2 = 1.2*np.sin(4*np.pi*x) + print(f"{x =}") + print(f"{y1 =}") + print(f"{y2 =}") + + fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) + ax1.plot(x, y1, x, y2, color='black') + ax1.fill_disjoint(x, y1, y2, where=y2 >= y1, facecolor='white', hatch='/', + interpolate=True) + ax1.fill_disjoint(x, y1, y2, where=y2 <= y1, facecolor='red', + interpolate=True) + + y2 = np.ma.masked_greater(y2, 1.0) + y2[0] = np.ma.masked + ax2.plot(x, y1, x, y2, color='black') + ax2.fill_disjoint(x, y1, y2, where=y2 >= y1, facecolor='green', + interpolate=True) + ax2.fill_disjoint(x, y1, y2, where=y2 <= y1, facecolor='red', + interpolate=True) + + +@image_comparison(['fill_disjoint_interpolate_decreasing'], + style='mpl20', remove_text=True) +def test_fill_disjoint_interpolate_decreasing(): + t = np.array([724.3, 700, 655]) + p = np.array([9.4, 7, 2.2]) + prof = np.array([7.9, 6.6, 3.8]) + + fig, ax = plt.subplots(figsize=(9, 9)) + + ax.plot(t, p, 'tab:red') + ax.plot(prof, p, 'k') + + ax.fill_disjoint(p, t, prof, where=prof < t, + facecolor='blue', interpolate=True, alpha=0.4) + ax.fill_disjoint(p, t, prof, where=prof > t, + facecolor='red', interpolate=True, alpha=0.4) + + ax.set_xlim(0, 30) + ax.set_ylim(800, 600) + + +@image_comparison(['fill_disjoint_interpolate_nan'], remove_text=True, + style='mpl20') +def test_fill_disjoint_interpolate_nan(): + x = np.arange(10) + y1 = np.asarray([8, 18, np.nan, 18, 8, 18, 24, 18, 8, 18]) + y2 = np.asarray([18, 11, 8, 11, 18, 26, 32, 30, np.nan, np.nan]) + + fig, ax = plt.subplots() + + ax.plot(x, y1, c='k') + ax.plot(x, y2, c='b') + ax.fill_disjoint(x, y1, y2, where=y2 >= y1, facecolor="green", + interpolate=True, alpha=0.5) + ax.fill_disjoint(x, y1, y2, where=y1 >= y2, facecolor="red", + interpolate=True, alpha=0.5) @check_figures_equal(extensions=["png"]) From e3daf7692079f52f41a21a466fe3e3f9a85b796f Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Sun, 18 Dec 2022 19:11:58 -0500 Subject: [PATCH 8/9] Fixed interplate keyword for fill_disjoint --- lib/matplotlib/axes/_axes.py | 86 +++++++++++++++++++----------------- 1 file changed, 45 insertions(+), 41 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 6612097c4abd..9a5e1b3fca06 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -5472,6 +5472,51 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, ind, dep1, dep2 = np.broadcast_arrays( np.atleast_1d(ind), dep1, dep2, subok=True) + pts = np.row_stack([np.column_stack([ind[where], dep1[where]]), + np.column_stack([ind[where], dep2[where]])]) + + if interpolate: + N = len(ind) + xslices = np.stack([ind, dep1, dep2], axis=-1) + sorted_idx = np.argsort(ind, kind="stable") + xslices = xslices[sorted_idx] + ind_interps = [] + dep_interps = [] + where_interps = [] + for i in range(N-1): + # sliding window + # [[dep1[i], dep2[i+1]], + # [dep2[i], dep2[i+1]], + # [ind[i], ind[i+1]]] + cur_slice = xslices[i] + next_slice = xslices[i+1] + d1 = cur_slice[1] - cur_slice[2] + d2 = next_slice[1] - next_slice[2] + dx = next_slice[0] - cur_slice[0] + if dx == 0: + # multiple ind with same value + pass + if (d1 > 0) == (d2 > 0): + continue + if (d1 == 0) or (d2 == 0): + continue + # calculate intersect pt + r = -d2/d1 + ind_interps.append((next_slice[0] + r*cur_slice[0])/(1+r)) + dep_interps.append((next_slice[1] + r*cur_slice[1])/(1+r)) + where_interps.append(where[i] or where[i+1]) + + ind = np.concatenate([ind, ind_interps]) + dep1 = np.concatenate([dep1, dep_interps]) + dep2 = np.concatenate([dep2, dep_interps]) + where = np.concatenate([where, where_interps]) + + sorted_idx = np.argsort(ind, kind="stable") + ind = ind[sorted_idx] + dep1 = dep1[sorted_idx] + dep2 = dep2[sorted_idx] + where = where[sorted_idx] + ret = [] for idx0, idx1 in cbook.contiguous_regions(where): indslice = ind[idx0:idx1] @@ -5486,45 +5531,6 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, if not len(indslice): continue - if interpolate: - N = len(indslice) - xslices = np.stack([indslice, dep1slice, dep2slice], axis=-1) - xslices = list(map(tuple, xslices)) - xslices.sort() - - ind_interps = [] - dep_interps = [] - for i in range(N-1): - # sliding window - # [[dep1[i], dep2[i+1]], - # [dep2[i], dep2[i+1]], - # [ind[i], ind[i+1]]] - - cur_slice = xslices[i] - next_slice = xslices[i+1] - - d1 = cur_slice[1] - cur_slice[2] - d2 = next_slice[1] - next_slice[2] - dx = next_slice[0] - cur_slice[0] - - if dx == 0: - # multiple ind with same value - pass - - if (d1 > 0) == (d2 > 0): - continue - if (d1 == 0) or (d2 == 0): - continue - - # calculate intersect pt - r = -d2/d1 - ind_interps.append((next_slice[0] + r*cur_slice[0])/(1+r)) - dep_interps.append((next_slice[1] + r*cur_slice[1])/(1+r)) - - indslice = np.concatenate([indslice, ind_interps]) - dep1slice = np.concatenate([dep1slice, dep_interps]) - dep2slice = np.concatenate([dep2slice, dep_interps]) - N = len(indslice) temp = np.stack([dep1slice, dep2slice]) @@ -5549,8 +5555,6 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, ret.append(line_below) # now update the datalim and autoscale - pts = np.row_stack([np.column_stack([ind[where], dep1[where]]), - np.column_stack([ind[where], dep2[where]])]) self.update_datalim(pts, updatex=True, updatey=True) self._request_autoscale_view() return ret From da28cf7532241e006fb8647bb73f1b733a1d9667 Mon Sep 17 00:00:00 2001 From: Kevin Wu Date: Mon, 19 Dec 2022 15:08:43 -0500 Subject: [PATCH 9/9] Generate test images --- lib/matplotlib/axes/_axes.py | 31 +++++++------- .../test_axes/fill_disjoint.pdf | Bin 0 -> 3513 bytes .../test_axes/fill_disjoint.png | Bin 15011 -> 18964 bytes .../test_axes/fill_disjoint_interpolate.pdf | Bin 0 -> 5106 bytes .../test_axes/fill_disjoint_interpolate.png | Bin 0 -> 49563 bytes .../fill_disjoint_interpolate_decreasing.pdf | Bin 0 -> 1572 bytes .../fill_disjoint_interpolate_decreasing.png | Bin 0 -> 15124 bytes .../fill_disjoint_interpolate_nan.pdf | Bin 0 -> 1705 bytes .../fill_disjoint_interpolate_nan.png | Bin 0 -> 24742 bytes .../test_axes/fill_disjoint_step.pdf | Bin 0 -> 1689 bytes .../test_axes/fill_disjoint_step.png | Bin 0 -> 20133 bytes lib/matplotlib/tests/test_axes.py | 39 ++++++------------ 12 files changed, 28 insertions(+), 42 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_decreasing.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_decreasing.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_nan.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_nan.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_step.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_step.png diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 9a5e1b3fca06..0fdaa1e58ab4 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -5306,7 +5306,6 @@ def _fill_between_x_or_y(self, ind_dir, ind, dep1, dep2=0, *, where=None, fill_between : Fill between two sets of y-values. fill_betweenx : Fill between two sets of x-values. """ - dep_dir = {"x": "y", "y": "x"}[ind_dir] if not mpl.rcParams["_internal.classic_mode"]: @@ -5472,9 +5471,6 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, ind, dep1, dep2 = np.broadcast_arrays( np.atleast_1d(ind), dep1, dep2, subok=True) - pts = np.row_stack([np.column_stack([ind[where], dep1[where]]), - np.column_stack([ind[where], dep2[where]])]) - if interpolate: N = len(ind) xslices = np.stack([ind, dep1, dep2], axis=-1) @@ -5543,20 +5539,23 @@ def _fill_above_or_below(self, ind, dep1, dep2=0, *, where=None, vertices_above[0:N, 1] = np.amax(temp, axis=0) vertices_below[0:N, 1] = np.amin(temp, axis=0) - line_above = mpatches.BoundedSemiplane(vertices_above, 'bottom', - **kwargs) - line_below = mpatches.BoundedSemiplane(vertices_below, 'top', - **kwargs) + plane_above = mpatches.BoundedSemiplane(vertices_above, 'bottom', + **kwargs) + plane_below = mpatches.BoundedSemiplane(vertices_below, 'top', + **kwargs) - self.add_artist(line_above) - self.add_artist(line_below) + self.add_artist(plane_above) + self.add_artist(plane_below) - ret.append(line_above) - ret.append(line_below) + ret.append(plane_above) + ret.append(plane_below) # now update the datalim and autoscale + pts = np.row_stack([np.column_stack([ind[where], dep1[where]]), + np.column_stack([ind[where], dep2[where]])]) self.update_datalim(pts, updatex=True, updatey=True) self._request_autoscale_view() + return ret def fill_disjoint(self, x, y1, y2, where=None, interpolate=False, @@ -5614,13 +5613,13 @@ def fill_disjoint(self, x, y1, y2, where=None, interpolate=False, Other Parameters ---------------- **kwargs - All other keyword arguments are passed on to `.Lines`. - %(Lines:kwdoc)s + All other keyword arguments are passed on to `.BoundedSemiplane`. + %(BoundedSemiplane:kwdoc)s Returns ------- - list of `.Lines` - A list `.Lines` containing the plotted Lines. + list of `.BoundedSemiplane` + A list `.BoundedSemiplane` containing the plotted Lines. See Also -------- diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.pdf b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint.pdf new file mode 100644 index 0000000000000000000000000000000000000000..091b5fea885d0133af67df9fed3af71dd9af009f GIT binary patch literal 3513 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 literal 15011 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_decreasing.pdf b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_decreasing.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a22268d9ab0c1e6900de09b96fb13db0599ccee3 GIT binary patch literal 1572 zcmY!laBd?tL9Q=K1-cI6eEp!*;{4L0WT1aQ?hjJX_f1X7Omxbx0NQ8(gk~ldU>wV( z?+o-5P-n4%B}AoTUS2+sX9!Y;91tLBSjhRL=B1ZpC>TO*bIZ&D`c*;SEe99?E~&}+ zDXAbQ7nc;JCgyTg%$YmoblzJP=Y7-!cx{!Vzv`qoG4mDfR4 z8~vXm+nxJAYx}bYPrI<;YuT~$uZmx?DkV?eWVeAcs*~63z@dF*iU;>hx*@eT>Doz+ zixDTSEJU)4}^1lXKr`pIfPr zwxY!S^1*3$SG``@qO5znRIZ<6z2d4J^Z0Eiuq;nXcjdjYV@b?$AQknex361jgD}51 zuej->%CNe_k-QaWg1oOaY&VJ3bmMt@b5%g{=cIO5(-(8xH*Qjr+7#iDlN?$aap+<~ zw^!pa<;vpbP*aWK1D&Q3q3ssuF8mF-nsB@E%&n_Tzg&2Vm3Zn;cM9fn{p*;`<&!Nw)z>j_zc#$vU$bO?>`p~nP`-dhEHsCJQvoPtn3x&Cat%23fW)E| zVqs#Si~~(Ti0lQ*EwEJOXsCe5mWT|c@9YRvq@SFqU_(66z69R>g22D8ph1f-*gZASg4yyaFj&ASH^vcV~~5fVm${ogpZWQN;`l%z$BtCT47msm{Uz(=A2@81@=im|>_hG_*wW zTS-x3W=?7mxHu2atV#ujm4bdyem*F4!R4N3URu6_A*9R(7fFdlCE#E+G%_^iQdM>J HcjE#8T>kx4 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_decreasing.png b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_decreasing.png new file mode 100644 index 0000000000000000000000000000000000000000..d259cc1a6f7452aeb6fece0a24e53d97c8f678b6 GIT binary patch literal 15124 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_nan.png b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_interpolate_nan.png new file mode 100644 index 0000000000000000000000000000000000000000..1e756a689db0ee74438df4c70838b6572a93a317 GIT binary patch literal 24742 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 vE+XP9lIIW+@f}If`u|V=6IY{yNbqHX;87G}yrL literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_step.pdf b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_step.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f1f273e7a0da9ce3eb74acc929ad74665474d85f GIT binary patch literal 1689 zcmY!laBd?tL9Q=K1-cI6eEp!*;{4L0WT1aQ?g!fMo0^iD=#*apw9xcHAZb|W`K0Ehmt-gyLTz-*%mMmWLEkM0 z7zi$@$@wX%AZHhs6s0ESa#hS(8s?oRZOC)?wTKm?ZqWbKOH6FLyf?jIY%<9e5YJ#T zxvp<2Khb#FWrj!|oqd(pCe$dcJbb-<|NeLKdHvVFot|siQTjjYg5Af@8FOnNJwLn1 z_S5GKnP_$4NzI2=KTmz?+;U{v>(%p*{V{0Q{&!mYbDvsTTP^~+Hyt)j5mNZS&*sMaZ|1vi$kbH6;ZEMv{zx~ZXFM_KbmVf zd0q{bNtOxk<#j$4z$~UCe!%O&AC_eY*0o7IVx8d3v9s}s%#K6z@o=jQK407A>3lEz z8hgiQzw2z#Q_u00FFPhOb;E~^pH8lhTWaXLmM_Cj&M9=pqF*ioX-};~le?_uetddj zj?WXW3Cvse#Vw7v*KIU+!;}|ZFGP0>b=XU`Y?#%xVaw{N7j}ya+l6&?m!$0Xy`*@= z)k@O1?f97m5|J|D3(utouJU1-+@7TSGQ((a=hEyx!Ka^i+e;kDW6@7YnZq z@t5AJU;KUN7mICq{ksEgW`xa_S*fYw8N}?qX-Qi563^G@GtNm^U&;NG2tAAO2Fr#1kGrwW%D|##0a0imvb(;sBT$ika-xDED81`D z8sSuC2v>%bp+V&XhP|Lt0z(i~(qIUJav#ivkn#*tjOlx4rW6A+JGi_Eg5>d1VEF)c zBrIsK`njSgHI2(a!O(=u01gz)OihhV719*oVunB`f`CFEOw7>81X$Lfi5Zvy{f91Q zfvMNf0#lul0j4@5BVZ_?nrDE;4g+IjVAP?iGc+*4u*1N}0E?TAFw_|uBdaSZO3chj zEdtje!I@R5z_3!#56aI6g)XSP)c4Fw%U3XjR21McFtMlv9IS@M#s*xfs;>TSTmbR$ BInw|D literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_step.png b/lib/matplotlib/tests/baseline_images/test_axes/fill_disjoint_step.png new file mode 100644 index 0000000000000000000000000000000000000000..e1247391e71a7771f6f3cf7eab624d8520e37522 GIT binary patch literal 20133 zcmeFZWmr|+`!2c`-LMEjnnemox1`dogs31L3L>#6X;4BM1nCeY6iEe9ghfaTC`t&@ zAtF+ups44W{QmoY_TJ}w+#k+|!*%&``8wyAV~+8R@!ZdS-($v`8tYI~uu`B$Hm3Xpen}t9~#^jvaDuNRsF$E zX@+hkb{)>=;p6MZQNgsfkXINNJkX4%FLz`qAqb@0U427ob+Z_Ls^>JkyvEfkpp^<; zU9bKz0RaJedivepKc90{p=P7zXnvCr6StJ3?#9JU<|MRV*$nxWr9vB$05?o#QxwCm zxHpx^zs5}_{vY`3K@QEl-h~SnboKNOL(fP`zO`fR7rRKde1l|%Y`RkC>AC{UN3$Vs zM2^I*?`~1i(c$fPZr{#M=4vhneCQCOe(L2*+eUnf*f%C*V;$KG!vO-(*Fg?!`C zjhV`JRx}kkIS&s{7UkRnK6g9V!u30 z3=R1d6ej)V<~Y@3Bcyq_xg#PXP-BvOdEGso_{i}ka)$Xy$!rD8t^KGnJ{AeQhbjh> zmiLfAXqS07KeCrA_B+mPg67xv`oGEno-8V?S3}+kN1ltlK5DF~shl#5W<1PzZ|*im z5_W_cxF5Sd_9T7H3txF&!r}J*&#R$KB(&pI!C35KkU2{0@A7Nrg}o6T1(pX7s?WFo zlXZ&o^W?^7OO7^+J2^Rp8~=|dtEv7X6EJGv9LXbnsQ+hwZexPB-1wO`v7k{@jm?v; z*D!>I>cpnYFG7D8Uyyd3793{ zTZ^vUO8OVFF}~d|NJnS)N&cp%4UZ_iO^rF~^$+c&D2vC{1kD~N8AY=X*W6}UENf%% z>Q>D(tg=xC_Zw6n$HnPdnxYx6TxlN89VV`3Qhj9Ja=7-$jC8y38h3PXR47wx6#*o_JF6>+s45L};#DGG1fUt@wTPG2~}!Jxl? z^bwQwbCkv7%Lc8^nU5^&H!Pq3@jv+G9+!B#(Y5j0p_ZnmXC_7QWb)XxCu_g=C%mR_ z)Zwc9{@PkTGVQo*@I264A&?G>onP*+{uCP**Z1ZEnsGWulF((OX?5$$Q?hT*yJUa2 zY^la2M8EtNRjR|IJoADXgOM~MHuZ2`GyXi*drSHHJ->w*kxbERnfTzXXWA%UY&Av$ z)@ufgk6hTVex)sOS*FWRBQ&BLT-*8etzx4GGaHAA6BBQ%1UI!3>mBQ71DD0b6i;#nQ(0C^6zFSee$^y4 zZ5>}39Bp{`OyH&_QR{xzy5_%35oS@_zjFx}EQS2MY$bSU``_QX(3i3k zvklI4EN)6~-vr%xn^?hxay+TYC6E?LDtifo@eYPDXIgy|-JkKKmn)R$p?=OA-^afs zBiC`SHAphnjhJ21YiuvV3y_)BZGz+Y@~#i!RGecGe7{p)(-jSI|3O>Y}eJk7%N_rL#YJNapvc z%)BOFBwJIZ@xFT|jyvlnnKaVs3PmbH--g!YD9JT z{5@TVgIxV`N7zN#%+QR@Sux@!b#Y_&=2dBSct++WI0mShR+X<*^%I8li_d7EZrUdP zV1&$sJY*Wr8)UpwXK(oU<_KM;@8%y%o3TWT(HYrr@+1@Oo=-{Yrn5(8;yDkKy7!eq zxBlr?B7Cg!IhLImhL(0a`b)i~@11$?_Yam|G9 zrIPj=(TiNuXR!3iv{vq^2stZ#JP}DS5z{T2oR{nJ2bUiTTnS9LZ=|!Upr~hm@`+m) zea(W2dsaiL;D4Gefo5NmD-Vj&VDu%88{-7Gc|YMqQHkULyL!%Lz(9BPFQ zVk$WfO6eE973^jdSd`v>3|r@CQMI-)((Fc3)pN$9YhArZ-J9l4v}Wri{e?F8g$Vh% z+iy#sY|76@L=svMXlZ`cB{ogm7HHL%>NJ+t`f*Ua>o)oLQowBFT48h| zRbvjokzm+|&-(`5rLD2Ow~gU=9=jC7Fx9m;(v^5}ymJ2DsnHhcvJD4!3}zZ4%<+e5 z+BZW&JB8Y}*|Kn*!F{pqw>tA1l#QCQvUPS{LIvsx*oUM zE2W=)=1$5LPNnFBPv=L{-K*QR})*6Lmb*mk3*YyLyr!AEaix z9XEUz8h$J*v+Nf`D3SDSW`wgbayj7H^^O>7I(8~=Z_`@NqhF7a?k-XYN2K5QA4^^3 zFrp&IRVn?b{~T?{>KoHK?yob~GCTJ!Cz)t=Z&af6n{=_vr{fo~hgHMOiEG4TY0Edw zYpAX?pIzvzyUC@g-MKziZWa$<0aDU^Ujmh!&a1-b|9heH|0}juj7z#h&p$uP6Bie; z)h>^ur3UEj^BMD768Do2QimNrULc?r42ps@JWSmB+fyNIMmSO@Iop^YHgOGNQ|m93 zkH(nYKh;aNYMyS&rRK}=nXnnxwabz6`oefSwkwhl=|SHUqz8%yn9Gg#+z-a?KBSuG zfZhr)iql9+n$}~F4tU>JlfMkeLz-ti13#SNFLtW~{2)!e{li^WgkW@4`n}0JSGXj}d_9J&NL)hDoc+E6ie7pJvfd zKkdJ)Z`gVzncZ@IV-oXjtmGVNw&EC07|5SnNIsXR4jq-HGhau*aj^ zU*5EZ{b(qL9+MUhNn74|$HDCb#RanxXM+uFgmsHy1-%(N4a=DmF|^H1qOoxlg}Q+H&7<*!~GYW9X|e|7-$ak$W&v7YqK3a3mJ%3Cmt;C7O0V z$CaD6OKHv>5cF71*{&K1b(G$B5#s?j<|XnWV3IB z@i9?$GC$SMJ{$1 zj>t((Pe1G6u*l^(E3Crt0$0Bp;Hyx*_vhEXbb-FI1)*GBR?PCM)Z6z<=f~4@uOeB& z!+=Jz>#%lWTX=8J z(4KybMXvZL6c`(g`9=RvWndb#0c9x}1;xNG4wv3||L|LfW*3TYTyfWvS5vckPItN4 zKa^@m>fiS4pIrU-u7ql4al2m~dH02e4n3#@v7B96O#G6PY4h`T6QSY3s3erjS#@=k zhK5G?^Pr3}KDY59;czq>>J;Jd^!;zHw33<^Za03dAV}-pCVY)#+Il7?b@co@ez!?F zs6L=fdBw^qFIS-7YQeJ8O|L;Fc$g&xFd|^a8OgObDp3^7V(PDM(Xml#Xw=ygzOQmr z$_#w@j-5Z*>)V3RoVPrt+b8=SlJO^_D2m_w`OW}K{EWYPBthLZ2IZr=b#n*i0H1U# zEZGXT8r@l-mr#9yLq30uuJDem+J)P? z4wG8W$V9ZlUT;(|PtzH{G_N6abw=svN?R*5eeupg&YSn;O19e~#DJ<)mw1k^&Y~!$ z=2+o`t63fjU7}xHoNxOLYvkqNh?d-i6fy^0zU*HfcGAy~Y`z0^l$>v>DK>6}F~CcF zj-HK@-yqkR-=TlddHh}KuWG^g85sv^cQ-d=Kqk(kpQhDTX#y&H$g(n}BZ|2vWUrLj z$3>hz1W_lg%5x`QW{n~1?K>p**FGR{V>nZ(eM4?f`c7bk_|)0cPujRWMIy{q%c)K3 zQekh+dL5z}eB9|6=yW%ohRuT(-7roUwzuyea<@b5?xy&p_UPc|Pr9TfbD2orU&qM; z6zdkLMBQrHf4_Eq+&icBJx}hw40pCBwBs2kesZXca%4xl++-1Lkuz<{-!qOqeA-(l@Svvdl@NDzd|#s${iP+u9yR17(&TNk>jM?6Xy zsw?=hJ_2_Xc(+A#S?{RDMJa1Cek^B2K6b3%Yi%Qu!+q0%@!aRRk$7p|ji38KZu~7w z2-~6;yISU&!g-r8_{UfKzEqy_e+IA8DT?ps7>XCJbZx8|7&*%o9Am9C(Y?h4iJ*r4 zgI7O`b!hwgBv|z{8~S!v2FWQY9lyMxo zv$Heq?%mFjk(7>T(#C+TtJlY?uPGH?+>_=|_e^47>7Gt>}vFY>WDen+1 z4-luQ(F|s33})5gPAv~zQ_6`u%DdVAC(HBG3k(|@rTT|Q7CDlRBupZfGWkQCG6bJH zq`XG+euj&OZ@s;^V&YM8N!qIAop2Q7)ukS%uXu$@WD-da&lRCyn0Ux z*T|2}X^X!NX%xk=`n|EkN3pblG^8gDD?~zbkdVjhZ*;xzOBJN`n5Cj-RX-brG~{~5 z|7)>+rZ5$U(!G247+Gc9@bYsZ=i0;mZ13;Oa*SA-qf|y^kK9H=T=uA7i%+TeJYWdX znRquY;|fqT+J-@D)Tq;dbb=ds)Y{qZG zrhI7%Vj#9fANAzYfI}fSX_e@L_s2#&EU;$NS4tjJ1kImFUixdi$=zN`fnlGV&Xsi+ zy3!=dAZXmZj@x~2W`g13GWq>u(^~=8^5B$k1SenoG4$7$_DLTSl&Rn!gq_h_BvV+! zkc#m%1u2acZ?xKx9bmyf`D)>X{+l1)KKFJsE>!Nf3HbE-*ZxM%nEbEdH4I@I9rZoYgfYp?LK|yj)sTmj5jH}sz)Y%s}0gbH)p=FpzrDskBrQ{ zJCw|eOG{l5XhH?AdDQ;Kggl2yjT!no3d&rY2l4#r-1L*`q1PKh_U-a{LY4f!bl0~3)qkj;Ia%*Wy3~`z8}MzWe5wDRDH`Xyb_zgV zUB(y2d1g7Yyx2)km`|POOEm6$5~5VbMNQfSKR1z%{Vsd>P||ZoVc@>F2@WTt=)1c7 zqj(4PdScPoc zlwt7rRa6R^ZcNj2ag9iiD3?~*AQdwks}zxOL6np;_m9}%=YxkT3I#PS@sqlZz1c;n1SCK)Mws5 z35Lprj(v@}IaV|yCT}2(5ZKeg&=Y`=9Cfl)Kf(6)GmXZuTR6lW6+Z7b?_M0!VVy2} zWJpSfk$gSD>@rkGL)rdM75JC}w#nL}btkOLCg}@;Gc`BW2n>6bh(u>Kcq0Hwsj5nN zV_UzcKl{^3DdAH#Wr!`eCXOMk1tAa?=1=Qh1vXLH36B$V4AzSgu@HPE#!{`O1CWA?LNVxO zM46RgXpE%Y0Ul`b7D2qatew0B!S|XbU?~8tkKVJWen8%$>p-1!ZRomK#xzbejV+6! zmE4@D3EdJ&j$cy`if-u^J-+ySire^(P|)-46W7Ng_WA5aR!X}YLn37><{n#V)nT@& zx0OFvTjl{tfN4Qvy6fYWmX`>M_9Xl!yTus+J}-;gbP5O2+B3DC#S_>uc~x{+FRB9J zuIXti+vX%9d#XFge+MNyHK0h52f%{#abyFY4^NKk&i%NeCsW^Y1h_sjdT{*z*#^+xj92Nh>eb7On>_mLK=8Q-xhH zi%j49Hp7gTf;ao3>R5fZOESk9?N_(<1Ak1pws#(>B^r0e8e1`W~QGW9V|(NCYs%!d8GF_0 zNr8~Sv=D0{JK4;LXV{|u^@dFGAjl~@4ln&TA6)PBcWlB zD=I329`hXc`0b6OPM7Ou(IYMD=r48gH#9mR_9ljs()uD%Q=R-#l_Mk%08(cK#wW4KU#PKG>`7wN(bgt0Q9a~~ zrQvu0FRQ?wJEJ9KLTswZm$1A*;qKO5TFsxMo?Ca@7)3x(9IY@dF@UHa8yNabo%dGA&7UbxWwBek@#y$fQd|vMb~GZ9($@#VfWUdGdx?^RX`Wu3lKzAHGT4I3zSs#0x0)5hfS^ej=xVe z_O|73eA38-X9C(8aX&CESbU@h-(oMPC4|F7GlcrXObb zzmfgjS=C7WspDEP@hFKxz&G}vp8~k*>+213q_kE{5|KEUoL{f7e~aDTizcQ7N`r_0 zHBPwy`bj(^HEhwOh!v9pKJ6LWF5`!RJj}6!W2h;><@k1X4%s-j4INr z>1j1luOc+(HSFY}mcN-Q?P{FyRufqZhSxtbT0V)gZn68M1nQTVEtHdi^7qX&9RpK!9-oH!+*0($ z1yTk2e+Lw+(|@vT6ME6oQ4bMNunh70@FFib1A}Qv-nwV3;M1+79P%}L-F%l#(6XPB zILoeJ`X_xIZKb2ceO(}_?#4YY3H}!OTtUc&)i^&Qjw~((_?BeII>UIaVv244?Gtov zVp+Q7z?{ZCuS%tJ=c}_;RPgOlVs8zoT{r)Mqkg<>foejvM0n$w@qb8s<7bfEfRVQ> zi}SPBT^ZOOGa0|bb0#3y*jd~bZ4udlw&k8u2n zI|t{9i5F28yN?Ki>&3oi6IPRclgl>Xg97qyTwp}Vp^`^LPYBgSsrGnohfywmAhX;o=zdXTMTAb|R^*vT zS-g%qk8izZLq3I_Kv`K?YIgQPY#s<~1DTXr;;~t$d1ODlux*{h36HFG3kQ`pMb~Z;z+kgN379##%7$x~z0yS*niruQA`|oJlV%L%Og9I9JMfcMQ?KSVl#&Q(AvFBoG_)ndR2X*{v z=)MKAncM^U6K$)Iy zhewU|&&Ic^|WW?=MT+yL|0vSNP*l32yiG{GWt!P{NtneC&&9+mm<4_4<8Xp=V*yUh=O$s z!Od4IDmvkfov_Dz9)H3HTL*Em-^RFMzCzjqtprwMf%HEJ##-c$p{my=M9+q?6^3(4 zNe#L9kTQ!|7XuIfzQ!i6R43&^wUwmm;WC5j-vh@?wffUZNPwh)yjbOM>&NY%bIrr# z`N_0xleOeZ1;$xoHu^=Xp$9v?T8*?#;IEQyOtdg^(DgU0j2G9eFj*` z_hqVV&*K8}NqDWN7-Dt8v_99*FQXFR#p9Vm*MctuT45keWcDo zA`n)n_HAO>N{|7|i`T8>PXnWO_0_GNKHd~Ms8km^?_6qdA{Vi&9#z`J%7eo}vs-}E zju~XL&7-~vbAfc0;S1fkYQrn_4#f8M_Ar>l5yJ&%7~tMKxf@FUM|+l2I<*Jm(h*8%WS-M&KPLQqmtB5L!3(bm?MgqCxtE%bM##pA5?KrE*o(#shA zT@~-!zT$H}>1X1(v!ZY3Chz}aC%KNciG(G{890xITKaY6`BFe+_ZM*3LeKy-yUX>x za;>mJyV|Y962E+uJ?W*c^3W)hxHO4SpUnSoXUU<)gk4joT+3G5M?) zY8~fO&9M6kk2T+>kB1lnmF93V!7Xp)x3@!PtErvp`2Dw($R^mg`zpS#Xx-y726IRl zUQ?ec*smqE7ntiW%AI4a-1Sv7=w0?0B*m$-5n>)}D>l?(Fc>k$I83couFBw`kdCgN<(2nK5HXYFdt= zT0K2mDvo#tZq5oWi9edDwc@X(@uCt!hfs*3?>b$%j5!oU+VtuAC6#vU8sOSyFF2%K zpJ><5$2(M4*{F82t_0H@khonJu8TVYvktfk?$r!AiJ2@Jur>z8{1{qe36mi%L=6+# z~rbnBf*dzK`fA7P=5^XEZR}xOC{PRFTA`?4vPfF8U z{!OIQyKCC2s?KLx0-4Ap@`0etLH^ZApJH3sOKtnKd%u?BQOl4P>o$Qq$i`jdTFZ0D z-q1%qO=3kE#z1t4qQyGW~f=e6KrRF8*@>vZpnM*&~iNJHSn@f+>v+ zG-;UMbt(wKpg-Q%>?kET`u@qQnH3TOtxs-@F<}9wKI%+^U|rmd#BnF0sjAbNNi@-6 zcoF>7;#KOSqyN<&U^?I&q{X*)+=+lWf@cxmtk(Wm5c{KfBdv1+3tuW|urJK?@)&!Q zV!C&!?JsdzX?g_; zA9ti-4^L84VwStIy|(A7_k(|<+nNt%?kJ8}UcZo8aMXF@y#wWR(DsQUi(?N{T%3^& z$u9!g2txb~e2AT_m+Ogd6)0wqUQ+0E2o5WIwVUX3?gZ1N4S{@#sV|XLzhsAatTtR{a(}J1j-J(6J1T9@Jb|leJA!5A&RL**p5a12c@N_{-2!La~BxTMbxaFLTS*+8a2*7 zt4wtaGcxWwUhN?C7AW~WfSksz7M4%XuV3f0qJQG_WlczJM!hfX;TiGY(eoTvmlXvv z7REnVbo(NJI8X@6(at-R5?4gxYk;K=050P(IE>aMxDIb5sgM3jk@2Es1ub1v2Qa-Zr4_HFAJ z=d9LTeKjyza<0m{MG8oCZXuz#DzgfJmgjP$oDF+@t757hPg4VvEa!P!hwDzaCg|VF zMaZgROGrw3=o)doDs&bZtlU*FQw< zt$~eg#~O)rPXS@!yLELEdl^?6au%oPhV*Q#i4p26Rd_p)+|3Zqx*CfLO;SA zjv!pxq5w?YxxuW{*FHRAavdpLnGN3J7Z8ZKHddY{ZmT-BGjq1ZXWV{1l}-Ui2EN1J zTgcOtk*CEtgI?nI#r*8KbC=pe6vM*85PjiQ@J}!Z*(()JpR)NV92qc2-J5cSe|y^= z8JPrRWHf*&!AeOX^Pirbt-Jr_!_=!_`I~Kr0>EU;aE#pe6eQT)a~AP9+_NB{Wd||8 z+ZWlaSyFRz2l8&V>Ak+oG}Uy2t;KiE1qh4~V4UuW+s@*YQ%qYGy1Uh1-vw#Gv{B&e z>ikc?uS|P0)m{4e_myKpV3mGbd7IAiP=rVnWm&QtAVR?iDhbrSw}~n* z(l&X3NYecZSs+f)7Oy*q5ii@>p8(rv_oDmWlS+L&d<68EFW9TFe(GNmD z>eXF;Mc>W_=k0?f@a6cm+eHF({;hWe@z&q;rTR?c@uDqM4ftjc(X>~~efF7cc=c=* zHYHp{8Q!K>M64QzO?Tt1Y)_(ch*a>^3RH;X$(6;_-lciViWdFYDZo@4VSONQ|pmQPrt zuM$17&uk~ad)N^QhkpYXQ}bNRLf4bci&rDink12#qfztV1|xKXNOA&Q5l`Y`B?ii2t9*D0j9@|1D+kD}>o; z#~?&E5;Qa1FkB*pL$3jaaJpNhXp{K%CvAM1excC45K(1TVkW3-0Kx^|Z)C=1A{YSQ zsBBA*XSPj8lB-{hZsFSlR(^G)xrVV&p0+TA{(>1Sfd3p=_{YuhcsY}J9F4}4RX+}U z483Sx?H9CPzp(wY`P-GIrU z&RkX!b2YYl_3`rAZv#xQMjB%O=XzWu1V};i8ta@J(@ibQhg!=;Hb8RnoQp9fcBfyn zvtz9zem>$R)qkCu6@M)IY3g*9rkp*N{c0)*vdN)P6i`q&_<2QFH_qUPv{N4)P@Lxi z0~J&_Xz1B#HWHmL&S);vIyg8~nwAihYA0c--N@OAUX;)pE?Iw9WVtlf(KAS!o9Ro63kgT7~R@ z+x(ab3ZKt%ALj0f)B22cR6;IF`Ojyfzk;IQl2mkX_tASN5w+_VxON=C^+88Rr*3LG z%H>&;sumvRGMwMksp@1rBIluu&J;9zI<12PNT|T5_wUV-+$e1EsN1zD zRJ%|)C|l+l{dCifQftM~`oVt}6B_~I@wct&+%?U35~9TfqDTWsYNW#C)x@i4;>bVh z)Ybjh#q$#Q7n_=H&KZMY;G}AZLRD3jjOR>tG%4-7mjO3JLPL#u8RRYFilz*2JlZ2} zzmTfru_(#0l73!7{>2VphwcI{v@dO#E0zLr&nP(iJaLW4A+$h1fLfu?30LU2)_{+@6Hi#j6km(X5gMvAR7bY z&;zpZkn{)=2k?g8Zcp$^5D?={EhiKK5CJ zlO4Ay$H7NCv9xMfiL$e|Hco?VJhJ*GuODO<5THS_;Ft;j_Xo%X<~{!C9NdE9?6DDg zn5YoCwj2ZV*zyi9Ft4VrYA0{X^q5^BCxPE*u-GvOIiAXhk@rvtlySo6y?jbPFvJ8TQ>y_++>ZS}V~E{j`eP zj(!_>Cd`QwJ)kWG?e+^^`}p*fph=+&hY3;LDyTZL6)VcsT{r&J{Y8(BT8pN&e@HkL zqAM7p>#Fo=y^sCfs894_7>rttb`mQh(@)rja{%nMti5UkkT3_9^!oZb%v@4vip8#y zT@osbv<t%Sg7^9dIbvV@4$s`J+ETDE22diGsCyTkwwa({kcLJ%I`^ z0JNK-@6FwbiJ@m>8@zYQtS?V~Ys=-c zz$z!;`lp5EI`B9DH~lgo%3Wuj(W={|TEctICk8NAPCELixBV3fF$nw|JAx(HKN8EjceeNfs4u8O4Yb3G;~J|laoreya!<@Ax6yUvU4yg1sd?)`6$j#`?fl#bKh1r&af@<|hv)8bEpDNr4224}57#gJGi#m_f(V zo(oi9SMyZLoCF7vlRm66#9@SpsF$BzM|NkJ1n@icH_wH+D-}MkIwl=L?)qtMJ;rm+ zV?Z!S6tbXLT&(`R)gBv1rhx0i3D*Nl(sGJP*nEC(L~ZTW&soIO0)+8-IHjVU$f9xm z`XdlxwP^?z@VT6fqNUrwgE}3*Ee|t{o;K*}qZlNLFns$Y5#e-Q@1_(=}SVK%o zP^IY^8975jHLtpGN4)Kz6Q?XGN*qXCNfeU&>{jn@yj-;&Fn2X>=i}lde{aR^tv#VU z*LL&{`UTjl#W`R$ND$)Dr6Y=%QP?~VLVSDl9PJJ$r@rg&_+h7t7>W2@uYFj9HmcVq zC_2Zbg#EYCGz}$I;I_tdFEl7wH>SakcxKeK-ibW6t0TiiRWBq&nd6K<_?4utz2k!d z*1*s(aXm2I2r5H_Lr$@KvvQHeil7>GHc^1V+xBo5-00(E^A8P1i_w}o;HaJ*Ucf08 zl%ETH^uO<4UQT~}T{4o?1Ln_E@3m&3lWbbfy-G^@{e8>?X}ZFsh@@Cr;zZv~nanu0 zUwI>s!ACkp5AM(ilvNWI>&x%aV{O)d|7@ZGsf(SbolKFfy+Scc@R;cCPel+MZ+v`O za;ecJUo|urRPIlK>nclRj|=mJ@F30~w-@i%`3u@$#5p7i8OGXZ#(XeAtbr~s@u$=r{V?@J?G zebcB-^ly*r^CTucqa-+BtiL-CC>QHt<_#~qo7K+v7laIn0_k~vkkSyt@8Rys)C)h6 z$jHdn-``$(%(dC9nD9|T{qlW%v?Ar%r&7{HuA6chfy_x@>)%ET5Jcjq)z#)Hw(oWr zrYj;j)#e4xer|v2`o=`<2xRJ0mm10zoUpU~y`%z$b=m~IiIH%cgHkJoO0vMPHBuW+ zCn!WT*R947viSTd-w60L4a+bHnC!sq4pKz&20hIS>TmQ|6Va z(3u|#URJNgCFn?~>L?a6MaFsTxu}==jNV<*Neskfhy2+gDke>}7fU|sH&Oee3HQ29 z*6|1$=g$wH*>d{y!fz-~-URxR`uER5G;MV+gWzT6J7pDlZ}<>iKXLtzpK~3p1jlEx zvXe%9#uXVsd#f1OSB?(%c6N5)&92TvewT3@#p9GQ(;HI^aNL_C3_>x7~1_swv!!t{-#8RO(=99w>4V;b_oJg*bV^D>wy&#G@Z16AL@C*H@P|8 z6-Df|FDz1W=<1NmB3K z(*$V?iCHjWNC8%dEmQNa##njX^-NjT=l)Ngd2Tz0dJRxRt=)W{%ZhXvEk{TlK~x&w zdeO&63b~0^c^d^gCf2qs1Zt2Bko(NQc{;YExlHomG3mwxoQ$Y*rhH#Z%PbBhGjis2 zMxUsTypJ@5<~=%0@?;<7joH>5Fu%fic^2TbfNP&{ra+BW%=-=JWg2uPy={cnC%ih}T$vapxaslB@ptZU(UP zEMz{&D`{6upRjs-qPRoR@$C~3BKc#a6-R`zV^xRUH~$yM+P(cVb%$<-%CJQtZmYBo z`tYCkU#;Bu8Z|LP9zyjUJ?v=o{1c@+y(e?4yH%1)NFk+) zk}90@#>P2|Gl4Ni9+WrE5+ORmnG`>vMuF{z{py}V#DPp3|4PLpS|NS%R@y^F6?anW zAnnQfGO3pb@zYhWPxwFR|MVKUbxE%J5Y0s-W@p3Q@Wu`MvmWwNE4g)-($*IDD8rxh zgvlwe9tnIg{g3sC-iSRV8(vm@j(YL@E}9MKTycA&6C5`rQm&C(@r$!>%=BTcE*^z- zs#!~(#x|v=5XqSqUG`X|*O0MOVXJai%3?uIK?;i3u?8~gc3zhA1k9{0owH3oUh=7G zqWPs=(ywPdxnDrMkq>&_d7X7ERhExIm%*|=T>xqz4Tz#Nf_e&5%4*-aT=|>B?;aW? zxeSQ8Mp#^V_(?^qTa|{LkKo#-sAJwpeID1>PR^aluWTHwicMly?mxS_{dC>R zAp(v$K4r%%7emy7+j_L#Q3niPE=rbJzfV*W<9e00YK6z8f+XPv zf{I7S?jR6IBwi@@zg>rT)_F07RlR|w9q}KC~l&!tyFP6BY^^{F6 zx}?_R&OiG;aChR%RHGn3(VpJkSb(9sfG;w#vRstLxqvT)B!AA$O^A|Ntecbt^_BDs z+pqxk$5_GoPzf)XG!upqs{nG|_c=19&%pbK7;2A>j;!kJ(7;vk%gTPhiJ}lsAe`7) ze_zGW{`VJHwk;e;C20C?DCNgZj+=#aV+-*q?xJNJDUG)okBoZLMUi)_HOi9%wtHb~ z%f#HA5q4KWMa3zrLP!HW$s7id>f@7>1;F`_SgyX#v}BMbKBUJS*2;-GE1o8sM@$8) zA!pNFIQE6%$UP-A<_sBUc_1_4nft^$aE60_J%3XXWCJ4*R#;@*==%Hn5l_XR-#_=> z8HhtHBzuhTg8e?XF870sK&nV}DNoX+H;CPU{}P-k_b3IW1gTA1gZ3Jn2Tve&dZ^AD zo#*uQ^r%>6;=qo$vp->*fe=`4a<#ys4Sw%|EGqC^TExDou0RLrIf*<2FQFJc*btr2 z@D+i~?QJhmZV-tFaWVLPdA|TPng6Hn*oGol>bRdVfwX7?+VPFIfyG>3-TEZgMyNx$Umok^hA5rf-Ii|?hjB0xKLfU!GYdsQWwOU*c*p5Lm) zhaYO&2VM)Em)g`Yn2S{d7d;*dH1F}+n&s#^99y$mn2_%m0LJGAnha!(9SD3n45kCr zkcQ=!0%Ji46~r|P6#l%I!skyf}z zS5{FW?Y*dpuyl(5-RWUNs%r2>KIcYS44 z(&VHS0zhD)z&A(iwq{?+AMGJFc__@vZ_c$@xA@%A;S9PB>W7raq{Pu5*`P;pfkpKB z0&*t?GNT(^d8FundKw5tkMi2*U$+_4I zEk4fvUnez8P3g?a4S7J0k#ZhzGV{S;q$!wVo?I!>XF51^1sj#bB=v}2;hVY z^?l{}XqXC9V2u_R7ys^V_4M>ysCUrPPG;A;e3=zi(;6@~0H6rDxc*#@k5ge3CCiiR zfFrQ46HJ@Mx_bbz$e*1v$Nu95c!PLhp)T}>LJ6W=9f$kA_3t;tIwE6%M~YoFBpa)B zx6WfqDofnfcxUl7wE#0ll2?I6&LiUEvxQyf!0+eXugv6it>cu8VzY)V)SuD~nRIu;| zUvO-|CsIsyDn>pnJGp&g9j``*hg&re<;qIm+q8Xt^n04H63*D^>rw zfIppe&q`2?RunV`u!O=xSI zt;Y4SNj7!Uwi5M)&Z|6;QzdtPetzyIICjf<`){%*i?$Ol5A`or3Vn1m`u3HSiuebo zs-dP+nZb`!*u{SEW4^_HKK_7<OS5m=G_@03pwcep-REQ#3t6CY!IN*?r^aTxefk zM4^iPFPwYuuG8laB6&Wa;G|$w(K@P-@BjYr%OSxNqgXo34mUWp{Di?!7QEHrJEC!c zzV+b2y3;Njz;E~vizs}?1wI{-$}|20AG!T&Lrl^6iYJ`(gP?tWy9>>$jqghv|KVQS zVIW>b^y1j!iSe!i9cE|gNv~t?*&@~PpeTpr|J-2R9wu=kS5{adND8;^U~@|J*fI%U zAox5^y*m7CmF#HyoZB2{jg54{0GwTgPnYmb<36Jjn9n7%kB8>TZL3LF>&XFRfR1^9 zycn`ePDF&i%d|b|I4&cZ9{OLm$X+LUeDR7evF9X;nyvGpLAlvf>~RNJ&Q~N`{Edp@ zmOBA9R7z&UiUv|d(8WluF2ve{1Zs-%|BA#}MUi2}ZWy9TVjavgh3ou87{#c9f2ce0 z~c629f@GPC{1iW??PO=KuY z^=K4Fv2|=#27A`=5Mb(otcTA3AN}i&GzUIIvA`Gw!~?Y;G`@3I>{r;I&EVh7Ti$0b zzz3P`i`fux!xx#nK$XRaGqQhuSJ94Jr|%G(jeY5(uxTBB^E~+Wkk2;VoNfKTW&upp zweNr<5>8G|7NxI5fIC$qf8Ci>S!H{tJC6VRqU(qEzWDm19N0Squ0sq2E^R)oV(@OFQ7w%`e<<+`d%p5Z^2J&UJlz^~Kj8&%d$y^j*68S{x_w4k!!#sq(I~=hrz!(J{2L@U=1yK*uPQ&1&T|^B|lYiPr Yy)4SV-I%i#cq|-)r>mdKI;Vst05!=m2LJ#7 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 58e2b329f763..edb39646ece3 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -56,8 +56,6 @@ def f2(x): return -55.0 * x plt.plot(xRng, [f2(x) for x in xRng], 'r-') plt.fill_disjoint(xRng, [f1(x) for x in xRng], [f2(x) for x in xRng], color='g') - plt.xlim(-1, 1) - plt.ylim(-100, 100) @image_comparison(['fill_disjoint_interpolate'], remove_text=True, @@ -66,9 +64,6 @@ def test_fill_disjoint_interpolate(): x = np.arange(0.0, 2, 0.02) y1 = np.sin(2*np.pi*x) y2 = 1.2*np.sin(4*np.pi*x) - print(f"{x =}") - print(f"{y1 =}") - print(f"{y2 =}") fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) ax1.plot(x, y1, x, y2, color='black') @@ -86,27 +81,6 @@ def test_fill_disjoint_interpolate(): interpolate=True) -@image_comparison(['fill_disjoint_interpolate_decreasing'], - style='mpl20', remove_text=True) -def test_fill_disjoint_interpolate_decreasing(): - t = np.array([724.3, 700, 655]) - p = np.array([9.4, 7, 2.2]) - prof = np.array([7.9, 6.6, 3.8]) - - fig, ax = plt.subplots(figsize=(9, 9)) - - ax.plot(t, p, 'tab:red') - ax.plot(prof, p, 'k') - - ax.fill_disjoint(p, t, prof, where=prof < t, - facecolor='blue', interpolate=True, alpha=0.4) - ax.fill_disjoint(p, t, prof, where=prof > t, - facecolor='red', interpolate=True, alpha=0.4) - - ax.set_xlim(0, 30) - ax.set_ylim(800, 600) - - @image_comparison(['fill_disjoint_interpolate_nan'], remove_text=True, style='mpl20') def test_fill_disjoint_interpolate_nan(): @@ -124,6 +98,19 @@ def test_fill_disjoint_interpolate_nan(): interpolate=True, alpha=0.5) +@image_comparison(['fill_disjoint_step'], remove_text=True, + style='mpl20') +def test_fill_disjoint_step(): + x = np.arange(10) + y1 = np.asarray([10, 8, 5, 7, 9, 11, 13, 15, 17, 19]) + y2 = np.asarray([18, 21, 25, 22, 19, 16, 13, 10, 7, 4]) + fig, ax = plt.subplots() + + ax.plot(x, y1, c='k') + ax.plot(x, y2, c='b') + ax.fill_disjoint(x, y1, y2, step="mid", facecolor="red") + + @check_figures_equal(extensions=["png"]) def test_invisible_axes(fig_test, fig_ref): ax = fig_test.subplots()