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

Skip to content

Commit c3c5118

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 a55909a commit c3c5118

File tree

4 files changed

+22
-28
lines changed

4 files changed

+22
-28
lines changed

lib/matplotlib/axis.py

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -929,24 +929,18 @@ def iter_ticks(self):
929929
"""
930930
Iterate through all of the major and minor ticks.
931931
"""
932-
majorLocs = self.major.locator()
933-
majorTicks = self.get_major_ticks(len(majorLocs))
934-
self.major.formatter.set_locs(majorLocs)
935-
majorLabels = [self.major.formatter(val, i)
936-
for i, val in enumerate(majorLocs)]
937-
938-
minorLocs = self.minor.locator()
939-
minorTicks = self.get_minor_ticks(len(minorLocs))
940-
self.minor.formatter.set_locs(minorLocs)
941-
minorLabels = [self.minor.formatter(val, i)
942-
for i, val in enumerate(minorLocs)]
943-
944-
major_minor = [
945-
(majorTicks, majorLocs, majorLabels),
946-
(minorTicks, minorLocs, minorLabels)]
947-
948-
for group in major_minor:
949-
yield from zip(*group)
932+
major_locs = self.major.locator()
933+
major_ticks = self.get_major_ticks(len(major_locs))
934+
self.major.formatter.set_locs(major_locs)
935+
major_labels = self.major.formatter.format_ticks(major_locs)
936+
937+
minor_locs = self.minor.locator()
938+
minor_ticks = self.get_minor_ticks(len(minor_locs))
939+
self.minor.formatter.set_locs(minor_locs)
940+
minor_labels = self.minor.formatter.format_ticks(minor_locs)
941+
942+
yield from zip(major_ticks, major_locs, major_labels)
943+
yield from zip(minor_ticks, minor_locs, minor_labels)
950944

951945
def get_ticklabel_extents(self, renderer):
952946
"""

lib/matplotlib/colorbar.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -789,7 +789,7 @@ def _ticker(self, locator, formatter):
789789
self._manual_tick_data_values = b
790790
ticks = self._locate(b)
791791
formatter.set_locs(b)
792-
ticklabels = [formatter(t, i) for i, t in enumerate(b)]
792+
ticklabels = formatter.format_ticks(b)
793793
offset_string = formatter.get_offset()
794794
return ticks, ticklabels, offset_string
795795

lib/matplotlib/ticker.py

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

256+
def format_ticks(self, values):
257+
"""Return the tick labels for all the ticks at once."""
258+
return [self(value, i) for i, value in enumerate(values)]
259+
256260
def format_data(self, value):
257261
"""
258262
Returns the full string representation of the value with the
@@ -291,7 +295,7 @@ def fix_minus(self, s):
291295
return s
292296

293297
def _set_locator(self, locator):
294-
""" Subclasses may want to override this to set a locator. """
298+
"""Subclasses may want to override this to set a locator."""
295299
pass
296300

297301

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)