diff --git a/doc/api/next_api_changes/2018-01-28-AL.rst b/doc/api/next_api_changes/2018-01-28-AL.rst index aec004ee9f5b..f01cd94b4de2 100644 --- a/doc/api/next_api_changes/2018-01-28-AL.rst +++ b/doc/api/next_api_changes/2018-01-28-AL.rst @@ -4,8 +4,13 @@ New `Formatter.format_ticks` method The `Formatter` class gained a new `~Formatter.format_ticks` method, which takes the list of all tick locations as a single argument and returns the list of all formatted values. It is called by the axis tick handling code and, by -default, repeatedly calls `~Formatter.__call__`. +default, first calls `~Formatter.set_locs` with all locations, then repeatedly +calls `~Formatter.__call__` for each location. -It is intended to be overridden by `Formatter` subclasses for which -the formatting of a tick value depends on other tick values, such as -`ConciseDateFormatter`. +Tick-handling code in the codebase that previously performed this sequence +(`~Formatter.set_locs` followed by repeated `~Formatter.__call__`) have been +updated to use `~Formatter.format_ticks`. + +`~Formatter.format_ticks` is intended to be overridden by `Formatter` +subclasses for which the formatting of a tick value depends on other tick +values, such as `ConciseDateFormatter`. diff --git a/lib/matplotlib/axis.py b/lib/matplotlib/axis.py index a2eb3e429bd1..04e9e5e150be 100644 --- a/lib/matplotlib/axis.py +++ b/lib/matplotlib/axis.py @@ -934,12 +934,10 @@ def iter_ticks(self): """ major_locs = self.major.locator() major_ticks = self.get_major_ticks(len(major_locs)) - self.major.formatter.set_locs(major_locs) major_labels = self.major.formatter.format_ticks(major_locs) minor_locs = self.minor.locator() minor_ticks = self.get_minor_ticks(len(minor_locs)) - self.minor.formatter.set_locs(minor_locs) minor_labels = self.minor.formatter.format_ticks(minor_locs) yield from zip(major_ticks, major_locs, major_labels) diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py index 5e9c33ee0c5c..9b0317f40f0a 100644 --- a/lib/matplotlib/colorbar.py +++ b/lib/matplotlib/colorbar.py @@ -788,7 +788,6 @@ def _ticker(self, locator, formatter): b = b[(b <= intv[1] + eps) & (b >= intv[0] - eps)] self._manual_tick_data_values = b ticks = self._locate(b) - formatter.set_locs(b) ticklabels = formatter.format_ticks(b) offset_string = formatter.get_offset() return ticks, ticklabels, offset_string diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 664d90ecbebc..225e1301a1b3 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -255,6 +255,7 @@ def __call__(self, x, pos=None): def format_ticks(self, values): """Return the tick labels for all the ticks at once.""" + self.set_locs(values) return [self(value, i) for i, value in enumerate(values)] def format_data(self, value): diff --git a/lib/mpl_toolkits/axisartist/axislines.py b/lib/mpl_toolkits/axisartist/axislines.py index 95d15fde3f98..8c2b29b950c2 100644 --- a/lib/mpl_toolkits/axisartist/axislines.py +++ b/lib/mpl_toolkits/axisartist/axislines.py @@ -225,12 +225,10 @@ def get_tick_iterators(self, axes): major = self.axis.major majorLocs = major.locator() - major.formatter.set_locs(majorLocs) majorLabels = major.formatter.format_ticks(majorLocs) minor = self.axis.minor minorLocs = minor.locator() - minor.formatter.set_locs(minorLocs) minorLabels = minor.formatter.format_ticks(minorLocs) trans_tick = self.get_tick_transform(axes) diff --git a/lib/mpl_toolkits/axisartist/grid_finder.py b/lib/mpl_toolkits/axisartist/grid_finder.py index 7c2f22f1631f..a05b128fcc0f 100644 --- a/lib/mpl_toolkits/axisartist/grid_finder.py +++ b/lib/mpl_toolkits/axisartist/grid_finder.py @@ -291,11 +291,9 @@ def __init__(self, useMathText=True): def __call__(self, direction, factor, values): if not self._ignore_factor: if factor is None: - factor = 1. - values = [v/factor for v in values] - #values = [v for v in values] - self._fmt.set_locs(values) - return [self._fmt(v) for v in values] + factor = 1 + values = [v / factor for v in values] + return self._fmt.format_ticks(values) class DictFormatter(object): diff --git a/lib/mpl_toolkits/mplot3d/axis3d.py b/lib/mpl_toolkits/mplot3d/axis3d.py index c2068dfabb69..e05ccd02d36c 100644 --- a/lib/mpl_toolkits/mplot3d/axis3d.py +++ b/lib/mpl_toolkits/mplot3d/axis3d.py @@ -135,9 +135,7 @@ def init3d(self): def get_tick_positions(self): majorLocs = self.major.locator() - self.major.formatter.set_locs(majorLocs) - majorLabels = [self.major.formatter(val, i) - for i, val in enumerate(majorLocs)] + majorLabels = self.major.formatter.format_ticks(majorLocs) return majorLabels, majorLocs def get_major_ticks(self, numticks=None): @@ -236,11 +234,8 @@ def draw(self, renderer): locmin, locmax = locmax, locmin # Rudimentary clipping - majorLocs = [loc for loc in majorLocs if - locmin <= loc <= locmax] - self.major.formatter.set_locs(majorLocs) - majorLabels = [self.major.formatter(val, i) - for i, val in enumerate(majorLocs)] + majorLocs = [loc for loc in majorLocs if locmin <= loc <= locmax] + majorLabels = self.major.formatter.format_ticks(majorLocs) mins, maxs, centers, deltas, tc, highs = self._get_coord_info(renderer)