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

Skip to content

Commit c867b93

Browse files
committed
Let Formatters format all ticks at once.
This is useful especially when labels are interdependent (e.g. ConciseDateFormatter, but also LogFormatter which currently relies on set_locs, etc.). Because `set_major_formatter`/`set_minor_formatter` (somewhat unusually) enforces that its argument is a Formatter subclass, even third-party formatters will inherit from the base class and have this method defined.
1 parent 4cab2ec commit c867b93

File tree

4 files changed

+21
-28
lines changed

4 files changed

+21
-28
lines changed

lib/matplotlib/axis.py

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -940,24 +940,18 @@ def iter_ticks(self):
940940
"""
941941
Iterate through all of the major and minor ticks.
942942
"""
943-
majorLocs = self.major.locator()
944-
majorTicks = self.get_major_ticks(len(majorLocs))
945-
self.major.formatter.set_locs(majorLocs)
946-
majorLabels = [self.major.formatter(val, i)
947-
for i, val in enumerate(majorLocs)]
948-
949-
minorLocs = self.minor.locator()
950-
minorTicks = self.get_minor_ticks(len(minorLocs))
951-
self.minor.formatter.set_locs(minorLocs)
952-
minorLabels = [self.minor.formatter(val, i)
953-
for i, val in enumerate(minorLocs)]
954-
955-
major_minor = [
956-
(majorTicks, majorLocs, majorLabels),
957-
(minorTicks, minorLocs, minorLabels)]
958-
959-
for group in major_minor:
960-
yield from zip(*group)
943+
major_locs = self.major.locator()
944+
major_ticks = self.get_major_ticks(len(major_locs))
945+
self.major.formatter.set_locs(major_locs)
946+
major_labels = self.major.formatter.format_ticks(major_locs)
947+
948+
minor_locs = self.minor.locator()
949+
minor_ticks = self.get_minor_ticks(len(minor_locs))
950+
self.minor.formatter.set_locs(minor_locs)
951+
minor_labels = self.minor.formatter.format_ticks(minor_locs)
952+
953+
yield from zip(major_ticks, major_locs, major_labels)
954+
yield from zip(minor_ticks, minor_locs, minor_labels)
961955

962956
def get_ticklabel_extents(self, renderer):
963957
"""

lib/matplotlib/colorbar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -765,7 +765,7 @@ def _ticker(self, locator, formatter):
765765
self._manual_tick_data_values = b
766766
ticks = self._locate(b)
767767
formatter.set_locs(b)
768-
ticklabels = [formatter(t, i) for i, t in enumerate(b)]
768+
ticklabels = formatter.format_ticks(b)
769769
offset_string = formatter.get_offset()
770770
return ticks, ticklabels, offset_string
771771

lib/matplotlib/ticker.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,9 @@ def __call__(self, x, pos=None):
253253
"""
254254
raise NotImplementedError('Derived must override')
255255

256+
def format_ticks(self, values):
257+
return [self(value, i) for i, value in enumerate(values)]
258+
256259
def format_data(self, value):
257260
"""
258261
Returns the full string representation of the value with the
@@ -291,7 +294,7 @@ def fix_minus(self, s):
291294
return s
292295

293296
def _set_locator(self, locator):
294-
""" Subclasses may want to override this to set a locator. """
297+
"""Subclasses may want to override this to set a locator."""
295298
pass
296299

297300

lib/mpl_toolkits/axisartist/axislines.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -226,14 +226,12 @@ def get_tick_iterators(self, axes):
226226
major = self.axis.major
227227
majorLocs = major.locator()
228228
major.formatter.set_locs(majorLocs)
229-
majorLabels = [major.formatter(val, i)
230-
for i, val in enumerate(majorLocs)]
229+
majorLabels = major.formatter.format_ticks(majorLocs)
231230

232231
minor = self.axis.minor
233232
minorLocs = minor.locator()
234233
minor.formatter.set_locs(minorLocs)
235-
minorLabels = [minor.formatter(val, i)
236-
for i, val in enumerate(minorLocs)]
234+
minorLabels = minor.formatter.format_ticks(minorLocs)
237235

238236
trans_tick = self.get_tick_transform(axes)
239237

@@ -323,14 +321,12 @@ def get_tick_iterators(self, axes):
323321
major = self.axis.major
324322
majorLocs = major.locator()
325323
major.formatter.set_locs(majorLocs)
326-
majorLabels = [major.formatter(val, i)
327-
for i, val in enumerate(majorLocs)]
324+
majorLabels = major.formatter.format_ticks(majorLocs)
328325

329326
minor = self.axis.minor
330327
minorLocs = minor.locator()
331328
minor.formatter.set_locs(minorLocs)
332-
minorLabels = [minor.formatter(val, i)
333-
for i, val in enumerate(minorLocs)]
329+
minorLabels = minor.formatter.format_ticks(minorLocs)
334330

335331
tr2ax = axes.transData + axes.transAxes.inverted()
336332

0 commit comments

Comments
 (0)