Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 777c9e5

Browse files
committed
FIX: colorbar re-check norm before draw for autolabels
FIX: properly set x/y limits MNT: add tolerance to colorbar locator methods
1 parent ab86e8f commit 777c9e5

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

lib/matplotlib/colorbar.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ def tick_values(self, vmin, vmax):
240240
vmin = max(vmin, self._colorbar.norm.vmin)
241241
vmax = min(vmax, self._colorbar.norm.vmax)
242242
ticks = super().tick_values(vmin, vmax)
243-
return ticks[(ticks >= vmin) & (ticks <= vmax)]
243+
rtol = (vmax - vmin) * 1e-10
244+
return ticks[(ticks >= vmin - rtol) & (ticks <= vmax + rtol)]
244245

245246

246247
class _ColorbarAutoMinorLocator(ticker.AutoMinorLocator):
@@ -296,7 +297,10 @@ def tick_values(self, vmin, vmax):
296297
vmin = self._colorbar.norm.vmin
297298
vmax = self._colorbar.norm.vmax
298299
ticks = super().tick_values(vmin, vmax)
299-
return ticks[(ticks >= vmin) & (ticks <= vmax)]
300+
rtol = (np.log10(vmax) - np.log10(vmin)) * 1e-10
301+
ticks = ticks[(np.log10(ticks) >= np.log10(vmin) - rtol) &
302+
(np.log10(ticks) <= np.log10(vmax) + rtol)]
303+
return ticks
300304

301305

302306
class ColorbarBase(cm.ScalarMappable):
@@ -405,7 +409,6 @@ def __init__(self, ax, cmap=None,
405409
else:
406410
self.formatter = format # Assume it is a Formatter
407411
# The rest is in a method so we can recalculate when clim changes.
408-
self.config_axis()
409412
self.draw_all()
410413

411414
def _extend_lower(self):
@@ -439,6 +442,7 @@ def draw_all(self):
439442
# units:
440443
X, Y = self._mesh()
441444
C = self._values[:, np.newaxis]
445+
self.config_axis()
442446
self._config_axes(X, Y)
443447
if self.filled:
444448
self._add_solids(X, Y, C)
@@ -593,6 +597,7 @@ def _config_axes(self, X, Y):
593597
ax.set_frame_on(False)
594598
ax.set_navigate(False)
595599
xy = self._outline(X, Y)
600+
ax.ignore_existing_data_limits = True
596601
ax.update_datalim(xy)
597602
ax.set_xlim(*ax.dataLim.intervalx)
598603
ax.set_ylim(*ax.dataLim.intervaly)
@@ -1150,7 +1155,6 @@ def update_bruteforce(self, mappable):
11501155
self.set_alpha(mappable.get_alpha())
11511156
self.cmap = mappable.cmap
11521157
self.norm = mappable.norm
1153-
self.config_axis()
11541158
self.draw_all()
11551159
if isinstance(self.mappable, contour.ContourSet):
11561160
CS = self.mappable

0 commit comments

Comments
 (0)