From d5e48d0a52088eccfda1508f1e73fa13aa0ee504 Mon Sep 17 00:00:00 2001 From: Phil Elson Date: Wed, 20 Jun 2012 12:26:28 +0100 Subject: [PATCH 1/2] Fixed logformatting for non integer bases. --- .../baseline_images/test_axes/log_scales.pdf | Bin 0 -> 6359 bytes .../baseline_images/test_axes/log_scales.png | Bin 0 -> 10899 bytes .../baseline_images/test_axes/log_scales.svg | 670 ++++++++++++++++++ lib/matplotlib/tests/test_axes.py | 8 + lib/matplotlib/ticker.py | 46 +- 5 files changed, 702 insertions(+), 22 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/log_scales.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/log_scales.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/log_scales.svg diff --git a/lib/matplotlib/tests/baseline_images/test_axes/log_scales.pdf b/lib/matplotlib/tests/baseline_images/test_axes/log_scales.pdf new file mode 100644 index 0000000000000000000000000000000000000000..91ca540b671911a44406e9d7d2ebae41eaf52ef2 GIT binary patch literal 6359 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 CO00kY literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/log_scales.png b/lib/matplotlib/tests/baseline_images/test_axes/log_scales.png new file mode 100644 index 0000000000000000000000000000000000000000..a925af6aa4ea8dd1f627977f60acbe04f937ff7d GIT binary patch literal 10899 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index d32cf66b2aea..1b80e3a26930 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -762,6 +762,14 @@ def _as_mpl_axes(self): 'Expected a PolarAxesSubplot, got %s' % type(ax) plt.close() +@image_comparison(baseline_images=['log_scales']) +def test_log_scales(): + fig = plt.figure() + ax = plt.gca() + plt.plot(np.log(np.linspace(0.1, 100))) + ax.set_yscale('log', basey=5.5) + ax.set_xscale('log', basex=9.0) + if __name__=='__main__': import nose diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 12134556e572..765e1463000e 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -567,9 +567,8 @@ class LogFormatter(Formatter): """ Format values for log axis; - if attribute *decadeOnly* is True, only the decades will be labelled. """ - def __init__(self, base=10.0, labelOnlyBase = True): + def __init__(self, base=10.0, labelOnlyBase=True): """ *base* is used to locate the decade tick, which will be the only one to be labeled if *labelOnlyBase* @@ -577,17 +576,15 @@ def __init__(self, base=10.0, labelOnlyBase = True): """ self._base = base+0.0 self.labelOnlyBase = labelOnlyBase - self.decadeOnly = True - + def base(self, base): 'change the *base* for labeling - warning: should always match the base used for :class:`LogLocator`' self._base = base - + def label_minor(self, labelOnlyBase): 'switch on/off minor ticks labeling' self.labelOnlyBase = labelOnlyBase - def __call__(self, x, pos=None): 'Return the format for tick val *x* at position *pos*' vmin, vmax = self.axis.get_view_interval() @@ -650,7 +647,6 @@ class LogFormatterExponent(LogFormatter): def __call__(self, x, pos=None): 'Return the format for tick val *x* at position *pos*' - vmin, vmax = self.axis.get_view_interval() vmin, vmax = mtransforms.nonsingular(vmin, vmax, expander = 0.05) d = abs(vmax-vmin) @@ -690,29 +686,35 @@ def __call__(self, x, pos=None): return '$0$' else: return '$\mathdefault{0}$' - sign = np.sign(x) - fx = math.log(abs(x))/math.log(b) - isDecade = is_close_to_int(fx) - - if sign == -1: - sign_string = '-' + + fx = math.log(abs(x)) / math.log(b) + is_decade = is_close_to_int(fx) + + sign_string = '-' if x < 0 else '' + + # use string formatting of the base if it is not an integer + if b % 1 == 0.0: + base = '%d' % b else: - sign_string = '' + base = '%s' % b - if not isDecade and self.labelOnlyBase: s = '' - elif not isDecade: + if not is_decade and self.labelOnlyBase: + return '' + elif not is_decade: if usetex: - s = r'$%s%d^{%.2f}$'% (sign_string, b, fx) + return (r'$%s' + base + r'^{%.2f}$') % \ + (sign_string, fx) else: - s = '$\mathdefault{%s%d^{%.2f}}$'% (sign_string, b, fx) + return ('$\mathdefault{%s' + base + '^{%.2f}}$') % \ + (sign_string, fx) else: if usetex: - s = r'$%s%d^{%d}$'% (sign_string, b, nearest_long(fx)) + return (r'$%s' + base + r'^{%d}$') % \ + (sign_string, nearest_long(fx)) else: - s = r'$\mathdefault{%s%d^{%d}}$'% (sign_string, b, - nearest_long(fx)) + return (r'$\mathdefault{%s' + base + r'^{%d}}$') % \ + (sign_string, nearest_long(fx)) - return s class EngFormatter(Formatter): """ From b8dde0193a6c0bc9e78a4799b49f8c729ccc0caa Mon Sep 17 00:00:00 2001 From: pelson Date: Sat, 28 Jul 2012 19:24:06 +0100 Subject: [PATCH 2/2] Review action. --- lib/matplotlib/ticker.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 765e1463000e..57176c89ad23 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -696,24 +696,24 @@ def __call__(self, x, pos=None): if b % 1 == 0.0: base = '%d' % b else: - base = '%s' % b + base = '%s' % b if not is_decade and self.labelOnlyBase: return '' elif not is_decade: if usetex: - return (r'$%s' + base + r'^{%.2f}$') % \ - (sign_string, fx) + return (r'$%s%s^{%.2f}$') % \ + (sign_string, base, fx) else: - return ('$\mathdefault{%s' + base + '^{%.2f}}$') % \ - (sign_string, fx) + return ('$\mathdefault{%s%s^{%.2f}}$') % \ + (sign_string, base, fx) else: if usetex: - return (r'$%s' + base + r'^{%d}$') % \ - (sign_string, nearest_long(fx)) + return (r'$%s%s^{%d}$') % \ + (sign_string, base, nearest_long(fx)) else: - return (r'$\mathdefault{%s' + base + r'^{%d}}$') % \ - (sign_string, nearest_long(fx)) + return (r'$\mathdefault{%s%s^{%d}}$') % \ + (sign_string, base, nearest_long(fx)) class EngFormatter(Formatter):