python-matplotlib/166a14473272_Fix-contour-colour-level-determination.patch

81 lines
3.3 KiB
Diff
Raw Normal View History

From 85896728ab6276da7b61f023acd7756cc73cf15d Mon Sep 17 00:00:00 2001
From: David Stansby <dstansby@gmail.com>
Date: Fri, 9 Jun 2017 19:26:11 +0100
Subject: [PATCH 1/2] Fix contour colour level determination
---
lib/matplotlib/contour.py | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/lib/matplotlib/contour.py b/lib/matplotlib/contour.py
index 82d9fb02331..5d3fc1126c0 100644
--- a/lib/matplotlib/contour.py
+++ b/lib/matplotlib/contour.py
@@ -1254,11 +1254,11 @@ def _process_colors(self):
i0, i1 = 0, len(self.levels)
if self.filled:
i1 -= 1
- # Out of range indices for over and under:
- if self.extend in ('both', 'min'):
- i0 = -1
- if self.extend in ('both', 'max'):
- i1 += 1
+ # Out of range indices for over and under:
+ if self.extend in ('both', 'min'):
+ i0 -= 1
+ if self.extend in ('both', 'max'):
+ i1 += 1
self.cvalues = list(range(i0, i1))
self.set_norm(colors.NoNorm())
else:
From 73e2c0ff996668951aa5b5035f43452b341b3712 Mon Sep 17 00:00:00 2001
From: David Stansby <dstansby@gmail.com>
Date: Fri, 9 Jun 2017 19:27:07 +0100
Subject: [PATCH 2/2] Correct contour level test
---
.../contour_manual_colors_and_levels.png | Bin 28760 -> 28921 bytes
lib/matplotlib/tests/test_contour.py | 19 ++++++++++---------
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/lib/matplotlib/tests/baseline_images/test_contour/contour_manual_colors_and_levels.png b/lib/matplotlib/tests/baseline_images/test_contour/contour_manual_colors_and_levels.png
[added as Source]
diff --git a/lib/matplotlib/tests/test_contour.py b/lib/matplotlib/tests/test_contour.py
index 5e2211066f3..eb2be0991ad 100644
--- a/lib/matplotlib/tests/test_contour.py
+++ b/lib/matplotlib/tests/test_contour.py
@@ -168,21 +168,22 @@ def test_given_colors_levels_and_extends():
levels = [2, 4, 8, 10]
for i, ax in enumerate(axes.flatten()):
- plt.sca(ax)
-
filled = i % 2 == 0.
extend = ['neither', 'min', 'max', 'both'][i // 2]
if filled:
- last_color = -1 if extend in ['min', 'max'] else None
- plt.contourf(data, colors=colors[:last_color], levels=levels,
- extend=extend)
+ # If filled, we have 3 colors with no extension,
+ # 4 colors with one extension, and 5 colors with both extensions
+ first_color = 1 if extend in ['max', 'neither'] else None
+ last_color = -1 if extend in ['min', 'neither'] else None
+ c = ax.contourf(data, colors=colors[first_color:last_color],
+ levels=levels, extend=extend)
else:
- last_level = -1 if extend == 'both' else None
- plt.contour(data, colors=colors, levels=levels[:last_level],
- extend=extend)
+ # If not filled, we have 4 levels and 4 colors
+ c = ax.contour(data, colors=colors[:-1],
+ levels=levels, extend=extend)
- plt.colorbar()
+ plt.colorbar(c, ax=ax)
@image_comparison(baseline_images=['contour_datetime_axis'],