From 137c7aa4f76e55f826e1891dd027422dac619e41 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Fri, 26 Feb 2016 16:48:17 +0100 Subject: [PATCH 01/15] Ticket 4376: Implemented functionality to let the user set an offset or a scaling factor for a specific axis using ScalarFormatter. - Scaling and offset have become exclusive: either scaling or offset or nothing. - This also resolves ambiguity as (x-offset)/scalar != (x/scalar-offset) - Added a new method set_useScalingFactor(True|False|value) - Wrote documentation for both set_useOffset(True|False|value) and set_useScalingFactor() - Fixed an (unreported) bug in HEAD that ignored the offset when scaling was performed automatically due to scientific notation - rcParams['axes.formatter.useoffset'] still controls whether to use offset when guessing best format. - set_powerlimits() still controls whether scaling is automatically performed --- lib/matplotlib/ticker.py | 134 ++++++++++++++++++++++++++++----------- 1 file changed, 97 insertions(+), 37 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 7455d03365a2..e1f5fb647a3a 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -155,6 +155,7 @@ from matplotlib.externals import six import decimal +import numbers import locale import math import numpy as np @@ -422,9 +423,12 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): # example: [1+1e-9,1+2e-9,1+3e-9] useMathText will render the offset # and scientific notation in mathtext - if useOffset is None: - useOffset = rcParams['axes.formatter.useoffset'] - self.set_useOffset(useOffset) + self.set_useOffset(False) + self.set_useScalingFactor(False) + if rcParams['axes.formatter.useoffset'] == True: + self._offsetScaleNone=0 #Basically an enum: 0=offset 1=scale 2=none + self._offsetScaleNone=2 #Basically an enum: 0=offset 1=scale 2=none + self._usetex = rcParams['text.usetex'] if useMathText is None: useMathText = rcParams['axes.formatter.use_mathtext'] @@ -437,19 +441,52 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): useLocale = rcParams['axes.formatter.use_locale'] self._useLocale = useLocale + def get_useScalingFactor(self): + return self._offsetScaleNone == 1 + + def set_useScalingFactor(self,val): + """ + Enable or disable the use of scaling factor in the axis. + Note that either offset or scaling can be used. Therefore, + this automatically turns off offset + """ + + if val in [True, False]: + self.orderOfMagnitude=math.log10(1) + self._offsetScaleNone=1 #0=offset 1=scale 2=none + if val == False: + self._offsetScaleNone=2 #0=offset 1=scale 2=none + elif isinstance(val,numbers.Number): + self._offsetScaleNone=1 #0=offset 1=scale 2=none + self.orderOfMagnitude=.5*math.log10(val*val) + else: + raise ValueError("'val' must be a number or a boolean") + + useScalingFactor = property(fget=get_useScalingFactor, fset=set_useScalingFactor) + def get_useOffset(self): - return self._useOffset + return self._offsetScaleNone == 0 def set_useOffset(self, val): + """ + Enable or disable the use of offset in the axis or enable & set the offset + at the same time. Since offset cannot be used in conjunction with a scaling + factor, the scaling factor is turned off. + """ if val in [True, False]: - self.offset = 0 - self._useOffset = val + self.offsetval = 0 + self._offsetScaleNone=0 #0=offset 1=scale 2=none + if val == False: + self._offsetScaleNone=2 #0=offset 1=scale 2=none + elif isinstance(val,numbers.Number): + self._offsetScaleNone=0 #0=offset 1=scale 2=none + self.offsetval = val else: - self._useOffset = False - self.offset = val + raise ValueError("'val' must be a number or a boolean") useOffset = property(fget=get_useOffset, fset=set_useOffset) + def get_useLocale(self): return self._useLocale @@ -511,53 +548,65 @@ def format_data(self, value): s = self._formatSciNotation(s) return self.fix_minus(s) + def get_offset(self): """Return scientific notation, plus offset""" if len(self.locs) == 0: return '' s = '' - if self.orderOfMagnitude or self.offset: - offsetStr = '' - sciNotStr = '' - if self.offset: - offsetStr = self.format_data(self.offset) - if self.offset > 0: - offsetStr = '+' + offsetStr + offsetStr = '' + sciNotStr = '' + if self._offsetScaleNone == 0: #OFFSET + if self._offsetScaleNone == 0: + offsetStr = self.format_data(self.offsetval) + if self.offsetval > 0: + offsetStr = ' +' + offsetStr + elif self._offsetScaleNone == 1: #SCALE if self.orderOfMagnitude: if self._usetex or self._useMathText: sciNotStr = self.format_data(10 ** self.orderOfMagnitude) else: - sciNotStr = '1e%d' % self.orderOfMagnitude - if self._useMathText: - if sciNotStr != '': - sciNotStr = r'\times%s' % _mathdefault(sciNotStr) - s = ''.join(('$', sciNotStr, _mathdefault(offsetStr), '$')) - elif self._usetex: - if sciNotStr != '': - sciNotStr = r'\times%s' % sciNotStr - s = ''.join(('$', sciNotStr, offsetStr, '$')) - else: - s = ''.join((sciNotStr, offsetStr)) + #sciNotStr = '%g' % 10 **self.orderOfMagnitude + sciNotStr = '\u22C5 ' + self.format_data(10 ** self.orderOfMagnitude) + + #Do final formatting + if self._useMathText: + if sciNotStr != '': + sciNotStr = r'\times%s' % _mathdefault(sciNotStr) + s = ''.join(('$', sciNotStr, _mathdefault(offsetStr), '$')) + elif self._usetex: + if sciNotStr != '': + sciNotStr = r'\times%s' % sciNotStr + s = ''.join(('$', sciNotStr, offsetStr, '$')) + else: + s = ''.join((sciNotStr, offsetStr)) return self.fix_minus(s) def set_locs(self, locs): 'set the locations of the ticks' self.locs = locs + if len(self.locs) > 0: vmin, vmax = self.axis.get_view_interval() d = abs(vmax - vmin) - if self._useOffset: + if self._offsetScaleNone == 0: self._set_offset(d) + self._set_orderOfMagnitude(d) self._set_format(vmin, vmax) def _set_offset(self, range): + #Determine if an offset is needed and if so, set it. + #This is only needed when scaling/offset hasn't been set by the user + if self._offsetScaleNone != 2: + return + # offset of 20,001 is 20,000, for example locs = self.locs if locs is None or not len(locs) or range == 0: - self.offset = 0 + self.set_useOffset(False) return vmin, vmax = sorted(self.axis.get_view_interval()) locs = np.asarray(locs) @@ -570,21 +619,23 @@ def _set_offset(self, range): if np.absolute(ave_oom - range_oom) >= 3: # four sig-figs p10 = 10 ** range_oom if ave_loc < 0: - self.offset = (math.ceil(np.max(locs) / p10) * p10) + self.set_useOffset((math.ceil(np.max(locs) / p10) * p10)) else: - self.offset = (math.floor(np.min(locs) / p10) * p10) + self.set_useOffset((math.floor(np.min(locs) / p10) * p10)) else: - self.offset = 0 + self.set_useOffset(False) + def _set_orderOfMagnitude(self, range): + # If the user has set scale/offset, their input is used # if scientific notation is to be used, find the appropriate exponent # if using an numerical offset, find the exponent after applying the - # offset - if not self._scientific: - self.orderOfMagnitude = 0 + if self._offsetScaleNone != 2 or self._scientific == False: + #User specified or unwanted return + locs = np.absolute(self.locs) - if self.offset: + if self._offsetScaleNone == 0: oom = math.floor(math.log10(range)) else: if locs[0] > locs[-1]: @@ -597,8 +648,10 @@ def _set_orderOfMagnitude(self, range): oom = math.floor(math.log10(val)) if oom <= self._powerlimits[0]: self.orderOfMagnitude = oom + self._offsetScaleNone=1 #Set to scale elif oom >= self._powerlimits[1]: self.orderOfMagnitude = oom + self._offsetScaleNone=1 #Set to scale else: self.orderOfMagnitude = 0 @@ -609,7 +662,7 @@ def _set_format(self, vmin, vmax): _locs = list(self.locs) + [vmin, vmax] else: _locs = self.locs - locs = (np.asarray(_locs) - self.offset) / 10. ** self.orderOfMagnitude + locs = (np.asarray(_locs) - self.offsetval) / 10. ** self.orderOfMagnitude loc_range = np.ptp(locs) # Curvilinear coordinates can yield two identical points. if loc_range == 0: @@ -638,7 +691,14 @@ def _set_format(self, vmin, vmax): self.format = '$%s$' % _mathdefault(self.format) def pprint_val(self, x): - xp = (x - self.offset) / (10. ** self.orderOfMagnitude) + #Decide if we are doing offset, scale, or none + if self._offsetScaleNone == 0 : + xp = x - self.offsetval + elif self._offsetScaleNone == 1: + xp = x / (10. ** self.orderOfMagnitude) + else: + xp = x + if np.absolute(xp) < 1e-8: xp = 0 if self._useLocale: From ab1b3a2c569974425f233d5d7d45933a04965a36 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Tue, 1 Mar 2016 13:45:26 +0100 Subject: [PATCH 02/15] Ticket 4376: Added more information in signature of the functions --- lib/matplotlib/ticker.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index e1f5fb647a3a..fe41f1b70271 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -446,7 +446,9 @@ def get_useScalingFactor(self): def set_useScalingFactor(self,val): """ - Enable or disable the use of scaling factor in the axis. + Takes (True|False|numeric value) as argument. + Enable, disable, or sets and enables the use of scaling factor + in the axis. Note that either offset or scaling can be used. Therefore, this automatically turns off offset """ @@ -469,9 +471,11 @@ def get_useOffset(self): def set_useOffset(self, val): """ - Enable or disable the use of offset in the axis or enable & set the offset - at the same time. Since offset cannot be used in conjunction with a scaling - factor, the scaling factor is turned off. + Takes (True|False|numeric value) as argument. + Enable, disable, or sets and enables the use of an offset + in the axis. + Note that either offset or scaling can be used. Therefore, + this automatically turns off scaling factor """ if val in [True, False]: self.offsetval = 0 From 4079e1ab9ba4a54a8b1b87973b4cd59bddce3b08 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Tue, 1 Mar 2016 14:54:58 +0100 Subject: [PATCH 03/15] Reformatted documentation of related function --- lib/matplotlib/ticker.py | 78 +++++++++++++++++++++++++++++++++------- 1 file changed, 65 insertions(+), 13 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index fe41f1b70271..561acfba56e0 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -446,11 +446,21 @@ def get_useScalingFactor(self): def set_useScalingFactor(self,val): """ - Takes (True|False|numeric value) as argument. - Enable, disable, or sets and enables the use of scaling factor - in the axis. + Control and set the scaling factor. Disabling this returns the + formatter to its default behavior, e.g. it will try to find + an appropriate scaling/offset if enabled. Note that either offset or scaling can be used. Therefore, this automatically turns off offset + + Parameters + ---------- + val : (True|False|numeric) + Enable, disable, or sets and enables the use of scaling factor + in the axis. + + Returns + ------- + NONE """ if val in [True, False]: @@ -471,11 +481,21 @@ def get_useOffset(self): def set_useOffset(self, val): """ - Takes (True|False|numeric value) as argument. - Enable, disable, or sets and enables the use of an offset - in the axis. + Control and set the offset. Disabling this returns the + formatter to its default behavior, e.g. it will try to find + an appropriate scaling/offset if enabled. Note that either offset or scaling can be used. Therefore, - this automatically turns off scaling factor + this automatically turns off scaling + + Parameters + ---------- + val : (True|False|numeric) + Enable, disable, or sets and enables the use of an offset + in the axis. + + Returns + ------- + NONE """ if val in [True, False]: self.offsetval = 0 @@ -518,20 +538,39 @@ def __call__(self, x, pos=None): return self.fix_minus(s) def set_scientific(self, b): - '''True or False to turn scientific notation on or off + """ + Enable/disable scientific notation see also :meth:`set_powerlimits` - ''' + + Parameters + ---------- + b : (True|False) + Enable, disable scientific notation + + Returns + ------- + NONE + """ self._scientific = bool(b) def set_powerlimits(self, lims): - ''' + """ Sets size thresholds for scientific notation. - e.g., ``formatter.set_powerlimits((-3, 4))`` sets the pre-2007 default in which scientific notation is used for numbers less than 1e-3 or greater than 1e4. See also :meth:`set_scientific`. - ''' + + Parameters + ---------- + lims : (number,number) + tuple with upper and lower limit triggering scientific notation + + Returns + ------- + NONE + """ + if len(lims) != 2: raise ValueError("'lims' must be a sequence of length 2") self._powerlimits = lims @@ -554,7 +593,20 @@ def format_data(self, value): def get_offset(self): - """Return scientific notation, plus offset""" + """ + Returns a string with the offset(or scientific notation)/scaling + factor which is properly formatted. This is used as additional text + next to the ticks. + + Parameters + ---------- + NONE + + Returns + ------- + :string + """ + if len(self.locs) == 0: return '' s = '' From bfc7389051e9b508d41c3ef33986d11dc9e83725 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Tue, 1 Mar 2016 17:08:52 +0100 Subject: [PATCH 04/15] Fixed minor issue, default scaling did not use scaling factor --- lib/matplotlib/ticker.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 561acfba56e0..b43f848c49b5 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -646,8 +646,7 @@ def set_locs(self, locs): if len(self.locs) > 0: vmin, vmax = self.axis.get_view_interval() d = abs(vmax - vmin) - if self._offsetScaleNone == 0: - self._set_offset(d) + self._set_offset(d) self._set_orderOfMagnitude(d) self._set_format(vmin, vmax) From 09f800ccf74c7299318e9f820fcfff452abf64d3 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Tue, 1 Mar 2016 17:19:22 +0100 Subject: [PATCH 05/15] Added functionality to manually set offset/scaling string --- lib/matplotlib/ticker.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index b43f848c49b5..194f40276ec5 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -436,6 +436,7 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.orderOfMagnitude = 0 self.format = '' self._scientific = True + self._offsetString = '' self._powerlimits = rcParams['axes.formatter.limits'] if useLocale is None: useLocale = rcParams['axes.formatter.use_locale'] @@ -592,11 +593,29 @@ def format_data(self, value): return self.fix_minus(s) + def set_offset_string(self,s): + """ + Set the string which typically contains the offset + or the scaling factor which is to be displayed on the axis. + Set this to and empty string "" allows the string set by offset or scaling + algorithm. + + Parameters + ---------- + s: String describing the offset + + Returns + ------- + None + """ + self._offsetString=s + def get_offset(self): """ Returns a string with the offset(or scientific notation)/scaling factor which is properly formatted. This is used as additional text - next to the ticks. + next to the ticks, either determined by offset/scaling or set by the + user Parameters ---------- @@ -606,6 +625,9 @@ def get_offset(self): ------- :string """ + #String has been set manually, so just return that + if self._offsetString != '' : + return self._offsetString if len(self.locs) == 0: return '' From 02f0a11397fb89fc57dd904791f616d77ef0b42f Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Wed, 2 Mar 2016 12:49:52 +0100 Subject: [PATCH 06/15] Made come more readable and more consistent with matplotlib defaults --- lib/matplotlib/ticker.py | 51 ++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 194f40276ec5..38ec72ae88ae 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -417,6 +417,11 @@ class ScalarFormatter(Formatter): axes.formatter.limits rc parameter. """ + mode = {'offset' :0, + 'scaling' :1, + 'none' :2, + } + _currentMode = 2 def __init__(self, useOffset=None, useMathText=None, useLocale=None): # useOffset allows plotting small data ranges with large offsets: for @@ -426,8 +431,8 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.set_useOffset(False) self.set_useScalingFactor(False) if rcParams['axes.formatter.useoffset'] == True: - self._offsetScaleNone=0 #Basically an enum: 0=offset 1=scale 2=none - self._offsetScaleNone=2 #Basically an enum: 0=offset 1=scale 2=none + self._currentMode=self.mode['offset'] + self._currentMode=self.mode['none'] self._usetex = rcParams['text.usetex'] if useMathText is None: @@ -436,14 +441,14 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.orderOfMagnitude = 0 self.format = '' self._scientific = True - self._offsetString = '' + self._offsetString = None self._powerlimits = rcParams['axes.formatter.limits'] if useLocale is None: useLocale = rcParams['axes.formatter.use_locale'] self._useLocale = useLocale def get_useScalingFactor(self): - return self._offsetScaleNone == 1 + return self._currentMode == self.mode['scaling'] def set_useScalingFactor(self,val): """ @@ -466,11 +471,11 @@ def set_useScalingFactor(self,val): if val in [True, False]: self.orderOfMagnitude=math.log10(1) - self._offsetScaleNone=1 #0=offset 1=scale 2=none + self._currentMode=self.mode['scaling'] if val == False: - self._offsetScaleNone=2 #0=offset 1=scale 2=none + self._currentMode=self.mode['none'] elif isinstance(val,numbers.Number): - self._offsetScaleNone=1 #0=offset 1=scale 2=none + self._currentMode=self.mode['scaling'] self.orderOfMagnitude=.5*math.log10(val*val) else: raise ValueError("'val' must be a number or a boolean") @@ -478,7 +483,7 @@ def set_useScalingFactor(self,val): useScalingFactor = property(fget=get_useScalingFactor, fset=set_useScalingFactor) def get_useOffset(self): - return self._offsetScaleNone == 0 + return self._currentMode == self.mode['offset'] def set_useOffset(self, val): """ @@ -500,11 +505,11 @@ def set_useOffset(self, val): """ if val in [True, False]: self.offsetval = 0 - self._offsetScaleNone=0 #0=offset 1=scale 2=none + self._currentMode=self.mode['offset'] if val == False: - self._offsetScaleNone=2 #0=offset 1=scale 2=none + self._currentMode=self.mode['none'] elif isinstance(val,numbers.Number): - self._offsetScaleNone=0 #0=offset 1=scale 2=none + self._currentMode=self.mode['offset'] self.offsetval = val else: raise ValueError("'val' must be a number or a boolean") @@ -597,7 +602,7 @@ def set_offset_string(self,s): """ Set the string which typically contains the offset or the scaling factor which is to be displayed on the axis. - Set this to and empty string "" allows the string set by offset or scaling + Set this to None to allow the string set by offset or scaling algorithm. Parameters @@ -626,7 +631,7 @@ def get_offset(self): :string """ #String has been set manually, so just return that - if self._offsetString != '' : + if self._offsetString != None : return self._offsetString if len(self.locs) == 0: @@ -634,12 +639,12 @@ def get_offset(self): s = '' offsetStr = '' sciNotStr = '' - if self._offsetScaleNone == 0: #OFFSET - if self._offsetScaleNone == 0: + if self._currentMode == self.mode['offset']: + if self._currentMode == self.mode['offset']: offsetStr = self.format_data(self.offsetval) if self.offsetval > 0: offsetStr = ' +' + offsetStr - elif self._offsetScaleNone == 1: #SCALE + elif self._currentMode == self.mode['scaling']: if self.orderOfMagnitude: if self._usetex or self._useMathText: sciNotStr = self.format_data(10 ** self.orderOfMagnitude) @@ -676,7 +681,7 @@ def set_locs(self, locs): def _set_offset(self, range): #Determine if an offset is needed and if so, set it. #This is only needed when scaling/offset hasn't been set by the user - if self._offsetScaleNone != 2: + if self._currentMode != self.mode['none']: return # offset of 20,001 is 20,000, for example @@ -707,12 +712,12 @@ def _set_orderOfMagnitude(self, range): # If the user has set scale/offset, their input is used # if scientific notation is to be used, find the appropriate exponent # if using an numerical offset, find the exponent after applying the - if self._offsetScaleNone != 2 or self._scientific == False: + if self._currentMode != self.mode['none'] or self._scientific == False: #User specified or unwanted return locs = np.absolute(self.locs) - if self._offsetScaleNone == 0: + if self._currentMode == self.mode['offset']: oom = math.floor(math.log10(range)) else: if locs[0] > locs[-1]: @@ -725,10 +730,10 @@ def _set_orderOfMagnitude(self, range): oom = math.floor(math.log10(val)) if oom <= self._powerlimits[0]: self.orderOfMagnitude = oom - self._offsetScaleNone=1 #Set to scale + self._currentMode=self.mode['scaling'] elif oom >= self._powerlimits[1]: self.orderOfMagnitude = oom - self._offsetScaleNone=1 #Set to scale + self._currentMode=self.mode['scaling'] else: self.orderOfMagnitude = 0 @@ -769,9 +774,9 @@ def _set_format(self, vmin, vmax): def pprint_val(self, x): #Decide if we are doing offset, scale, or none - if self._offsetScaleNone == 0 : + if self._currentMode == self.mode['offset'] : xp = x - self.offsetval - elif self._offsetScaleNone == 1: + elif self._currentMode == self.mode['scaling']: xp = x / (10. ** self.orderOfMagnitude) else: xp = x From 5368336d44490d935c803a38c87c1dee502e87e2 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Wed, 2 Mar 2016 15:30:39 +0100 Subject: [PATCH 07/15] Made code in ticker.py PEP8 compliant --- lib/matplotlib/ticker.py | 156 ++++++++++++++++++--------------------- 1 file changed, 70 insertions(+), 86 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 38ec72ae88ae..d8f3cb541c19 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -377,8 +377,8 @@ def __call__(self, x, pos=None): return self.pprint_val(x, d) def pprint_val(self, x, d): - #if the number is not too big and it's an int, format it as an - #int + # if the number is not too big and it's an int, format it as an + # int if abs(x) < 1e4 and x == int(x): return '%d' % x @@ -395,7 +395,7 @@ def pprint_val(self, x, d): else: fmt = '%1.3f' s = fmt % x - #print d, x, fmt, s + # print d, x, fmt, s tup = s.split('e') if len(tup) == 2: mantissa = tup[0].rstrip('0').rstrip('.') @@ -417,10 +417,7 @@ class ScalarFormatter(Formatter): axes.formatter.limits rc parameter. """ - mode = {'offset' :0, - 'scaling' :1, - 'none' :2, - } + mode = {'offset': 0, 'scaling': 1, 'none': 2, } _currentMode = 2 def __init__(self, useOffset=None, useMathText=None, useLocale=None): @@ -430,9 +427,9 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.set_useOffset(False) self.set_useScalingFactor(False) - if rcParams['axes.formatter.useoffset'] == True: - self._currentMode=self.mode['offset'] - self._currentMode=self.mode['none'] + if rcParams['axes.formatter.useoffset'] is True: + self._currentMode = self.mode['offset'] + self._currentMode = self.mode['none'] self._usetex = rcParams['text.usetex'] if useMathText is None: @@ -450,19 +447,19 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): def get_useScalingFactor(self): return self._currentMode == self.mode['scaling'] - def set_useScalingFactor(self,val): + def set_useScalingFactor(self, val): """ - Control and set the scaling factor. Disabling this returns the + Control and set the scaling factor. Disabling this returns the formatter to its default behavior, e.g. it will try to find an appropriate scaling/offset if enabled. - Note that either offset or scaling can be used. Therefore, + Note that either offset or scaling can be used. Therefore, this automatically turns off offset Parameters ---------- val : (True|False|numeric) Enable, disable, or sets and enables the use of scaling factor - in the axis. + in the axis. Returns ------- @@ -470,34 +467,35 @@ def set_useScalingFactor(self,val): """ if val in [True, False]: - self.orderOfMagnitude=math.log10(1) - self._currentMode=self.mode['scaling'] - if val == False: - self._currentMode=self.mode['none'] - elif isinstance(val,numbers.Number): - self._currentMode=self.mode['scaling'] - self.orderOfMagnitude=.5*math.log10(val*val) + self.orderOfMagnitude = math.log10(1) + self._currentMode = self.mode['scaling'] + if val is False: + self._currentMode = self.mode['none'] + elif isinstance(val, numbers.Number): + self._currentMode = self.mode['scaling'] + self.orderOfMagnitude = .5*math.log10(val*val) else: raise ValueError("'val' must be a number or a boolean") - useScalingFactor = property(fget=get_useScalingFactor, fset=set_useScalingFactor) + useScalingFactor = property(fget=get_useScalingFactor, + fset=set_useScalingFactor) def get_useOffset(self): return self._currentMode == self.mode['offset'] def set_useOffset(self, val): """ - Control and set the offset. Disabling this returns the + Control and set the offset. Disabling this returns the formatter to its default behavior, e.g. it will try to find an appropriate scaling/offset if enabled. - Note that either offset or scaling can be used. Therefore, + Note that either offset or scaling can be used. Therefore, this automatically turns off scaling Parameters ---------- val : (True|False|numeric) Enable, disable, or sets and enables the use of an offset - in the axis. + in the axis. Returns ------- @@ -505,18 +503,17 @@ def set_useOffset(self, val): """ if val in [True, False]: self.offsetval = 0 - self._currentMode=self.mode['offset'] - if val == False: - self._currentMode=self.mode['none'] - elif isinstance(val,numbers.Number): - self._currentMode=self.mode['offset'] + self._currentMode = self.mode['offset'] + if val is False: + self._currentMode = self.mode['none'] + elif isinstance(val, numbers.Number): + self._currentMode = self.mode['offset'] self.offsetval = val else: raise ValueError("'val' must be a number or a boolean") useOffset = property(fget=get_useOffset, fset=set_useOffset) - def get_useLocale(self): return self._useLocale @@ -545,13 +542,13 @@ def __call__(self, x, pos=None): def set_scientific(self, b): """ - Enable/disable scientific notation + Enable/disable scientific notation see also :meth:`set_powerlimits` Parameters ---------- b : (True|False) - Enable, disable scientific notation + Enable, disable scientific notation Returns ------- @@ -597,12 +594,11 @@ def format_data(self, value): s = self._formatSciNotation(s) return self.fix_minus(s) - - def set_offset_string(self,s): + def set_offset_string(self, value): """ Set the string which typically contains the offset - or the scaling factor which is to be displayed on the axis. - Set this to None to allow the string set by offset or scaling + or the scaling factor which is to be displayed on the axis. + Set this to None to allow the string set by offset or scaling algorithm. Parameters @@ -613,13 +609,13 @@ def set_offset_string(self,s): ------- None """ - self._offsetString=s + self._offsetString = value def get_offset(self): """ Returns a string with the offset(or scientific notation)/scaling factor which is properly formatted. This is used as additional text - next to the ticks, either determined by offset/scaling or set by the + next to the ticks, either determined by offset/scaling or set by the user Parameters @@ -630,8 +626,8 @@ def get_offset(self): ------- :string """ - #String has been set manually, so just return that - if self._offsetString != None : + # String has been set manually, so just return that + if self._offsetString is not None: return self._offsetString if len(self.locs) == 0: @@ -639,20 +635,21 @@ def get_offset(self): s = '' offsetStr = '' sciNotStr = '' - if self._currentMode == self.mode['offset']: + if self._currentMode == self.mode['offset']: if self._currentMode == self.mode['offset']: offsetStr = self.format_data(self.offsetval) if self.offsetval > 0: offsetStr = ' +' + offsetStr - elif self._currentMode == self.mode['scaling']: + elif self._currentMode == self.mode['scaling']: if self.orderOfMagnitude: if self._usetex or self._useMathText: sciNotStr = self.format_data(10 ** self.orderOfMagnitude) else: - #sciNotStr = '%g' % 10 **self.orderOfMagnitude - sciNotStr = '\u22C5 ' + self.format_data(10 ** self.orderOfMagnitude) + # sciNotStr = '%g' % 10 **self.orderOfMagnitude + sciNotStr = ('\u22C5 ' + self.format_data( + 10 ** self.orderOfMagnitude)) - #Do final formatting + # Do final formatting if self._useMathText: if sciNotStr != '': sciNotStr = r'\times%s' % _mathdefault(sciNotStr) @@ -679,10 +676,10 @@ def set_locs(self, locs): self._set_format(vmin, vmax) def _set_offset(self, range): - #Determine if an offset is needed and if so, set it. - #This is only needed when scaling/offset hasn't been set by the user + # Determine if an offset is needed and if so, set it. + # This is only needed when scaling/offset hasn't been set by the user if self._currentMode != self.mode['none']: - return + return # offset of 20,001 is 20,000, for example locs = self.locs @@ -707,13 +704,12 @@ def _set_offset(self, range): else: self.set_useOffset(False) - def _set_orderOfMagnitude(self, range): # If the user has set scale/offset, their input is used # if scientific notation is to be used, find the appropriate exponent # if using an numerical offset, find the exponent after applying the - if self._currentMode != self.mode['none'] or self._scientific == False: - #User specified or unwanted + if self._currentMode != self.mode['none'] or self._scientific is False: + # User specified or unwanted return locs = np.absolute(self.locs) @@ -730,10 +726,10 @@ def _set_orderOfMagnitude(self, range): oom = math.floor(math.log10(val)) if oom <= self._powerlimits[0]: self.orderOfMagnitude = oom - self._currentMode=self.mode['scaling'] + self._currentMode = self.mode['scaling'] elif oom >= self._powerlimits[1]: self.orderOfMagnitude = oom - self._currentMode=self.mode['scaling'] + self._currentMode = self.mode['scaling'] else: self.orderOfMagnitude = 0 @@ -744,7 +740,8 @@ def _set_format(self, vmin, vmax): _locs = list(self.locs) + [vmin, vmax] else: _locs = self.locs - locs = (np.asarray(_locs) - self.offsetval) / 10. ** self.orderOfMagnitude + locs = ((np.asarray(_locs) - self.offsetval) / + 10. ** self.orderOfMagnitude) loc_range = np.ptp(locs) # Curvilinear coordinates can yield two identical points. if loc_range == 0: @@ -773,8 +770,8 @@ def _set_format(self, vmin, vmax): self.format = '$%s$' % _mathdefault(self.format) def pprint_val(self, x): - #Decide if we are doing offset, scale, or none - if self._currentMode == self.mode['offset'] : + # Decide if we are doing offset, scale, or none + if self._currentMode == self.mode['offset']: xp = x - self.offsetval elif self._currentMode == self.mode['scaling']: xp = x / (10. ** self.orderOfMagnitude) @@ -877,8 +874,8 @@ def format_data_short(self, value): return '%-12g' % value def pprint_val(self, x, d): - #if the number is not too big and it's an int, format it as an - #int + # if the number is not too big and it's an int, format it as an + # int if abs(x) < 1e4 and x == int(x): return '%d' % x @@ -1025,25 +1022,10 @@ class EngFormatter(Formatter): # (https://github.com/jcrocholl/pep8/issues/271) # The SI engineering prefixes - ENG_PREFIXES = { - -24: "y", - -21: "z", - -18: "a", - -15: "f", - -12: "p", - -9: "n", - -6: "\u03bc", - -3: "m", - 0: "", - 3: "k", - 6: "M", - 9: "G", - 12: "T", - 15: "P", - 18: "E", - 21: "Z", - 24: "Y" - } + ENG_PREFIXES = {-24: "y", -21: "z", -18: "a", -15: "f", + -12: "p", -9: "n", -6: "\u03bc", -3: "m", + 0: "", 3: "k", 6: "M", 9: "G", 12: "T", + 15: "P", 18: "E", 21: "Z", 24: "Y"} def __init__(self, unit="", places=None): self.unit = unit @@ -1398,7 +1380,7 @@ def le(self, x): 'return the largest multiple of base <= x' d, m = divmod(x, self._base) if closeto(m / self._base, 1): # was closeto(m, self._base) - #looks like floating point error + # looks like floating point error return (d + 1) * self._base return d * self._base @@ -1406,7 +1388,7 @@ def gt(self, x): 'return the smallest multiple of base > x' d, m = divmod(x, self._base) if closeto(m / self._base, 1): - #looks like floating point error + # looks like floating point error return (d + 2) * self._base return (d + 1) * self._base @@ -1605,8 +1587,9 @@ def __call__(self): return self.tick_values(vmin, vmax) def tick_values(self, vmin, vmax): - vmin, vmax = mtransforms.nonsingular(vmin, vmax, expander=1e-13, - tiny=1e-14) + vmin, vmax = mtransforms.nonsingular(vmin, + vmax, expander=1e-13, + tiny=1e-14) locs = self.bin_boundaries(vmin, vmax) prune = self._prune if prune == 'lower': @@ -1624,8 +1607,9 @@ def view_limits(self, dmin, dmax): dmin = -maxabs dmax = maxabs - dmin, dmax = mtransforms.nonsingular(dmin, dmax, expander=1e-12, - tiny=1.e-13) + dmin, dmax = mtransforms.nonsingular(dmin, + dmax, expander=1e-12, + tiny=1.e-13) if rcParams['axes.autolimit_mode'] == 'round_numbers': return np.take(self.bin_boundaries(dmin, dmax), [0, -1]) @@ -2180,8 +2164,8 @@ def get_locator(self, d): fld = math.floor(ld) base = 10 ** fld - #if ld==fld: base = 10**(fld-1) - #else: base = 10**fld + # if ld==fld: base = 10**(fld-1) + # else: base = 10**fld if d >= 5 * base: ticksize = base From fee8ab9915201ab891e2abae08f1e6ca37754975 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Wed, 2 Mar 2016 18:34:41 +0100 Subject: [PATCH 08/15] Removed old test and changed code to respect rcParams --- lib/matplotlib/ticker.py | 8 ++++---- setup.cfg.template | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index d8f3cb541c19..83fdfa37b4eb 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -427,8 +427,6 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.set_useOffset(False) self.set_useScalingFactor(False) - if rcParams['axes.formatter.useoffset'] is True: - self._currentMode = self.mode['offset'] self._currentMode = self.mode['none'] self._usetex = rcParams['text.usetex'] @@ -677,8 +675,10 @@ def set_locs(self, locs): def _set_offset(self, range): # Determine if an offset is needed and if so, set it. - # This is only needed when scaling/offset hasn't been set by the user - if self._currentMode != self.mode['none']: + # Don't do this if scaling/offset has been set of it is + # rcParams forbids automatic offset + if (self._currentMode != self.mode['none'] or + rcParams['axes.formatter.useoffset'] is False) : return # offset of 20,001 is 20,000, for example diff --git a/setup.cfg.template b/setup.cfg.template index cae6f678e19f..3d1ef1ebb024 100644 --- a/setup.cfg.template +++ b/setup.cfg.template @@ -13,7 +13,7 @@ # set this to True. It will download and build a specific version of # FreeType, and then use that to build the ft2font extension. This # ensures that test images are exactly reproducible. -#local_freetype = False +local_freetype = True [status] # To suppress display of the dependencies and their versions From 681820f13247f1c951edc16dfdb05848244f1697 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Sun, 6 Mar 2016 14:58:18 +0100 Subject: [PATCH 09/15] Changes multiplication sign from cdot to cross --- lib/matplotlib/ticker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 83fdfa37b4eb..7cbdfae6fe3c 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -644,7 +644,7 @@ def get_offset(self): sciNotStr = self.format_data(10 ** self.orderOfMagnitude) else: # sciNotStr = '%g' % 10 **self.orderOfMagnitude - sciNotStr = ('\u22C5 ' + self.format_data( + sciNotStr = ('\u2A2F ' + self.format_data( 10 ** self.orderOfMagnitude)) # Do final formatting From 66061adac67ff71a0c5ffcaa05641138ad219485 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Sun, 6 Mar 2016 15:39:06 +0100 Subject: [PATCH 10/15] axis.formatter.useoffset is still honored, however, it is not directly returned by get_useOffset(). get_useOffset() returns whether an offset has been set either by the user or by _set_offset() --- lib/matplotlib/tests/test_ticker.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_ticker.py b/lib/matplotlib/tests/test_ticker.py index 438be20aa7ce..92c3201e852a 100644 --- a/lib/matplotlib/tests/test_ticker.py +++ b/lib/matplotlib/tests/test_ticker.py @@ -351,7 +351,7 @@ def test_logformatter_pprint(): def test_use_offset(): - for use_offset in [True, False]: + for use_offset in [False]: with matplotlib.rc_context({'axes.formatter.useoffset': use_offset}): tmp_form = mticker.ScalarFormatter() nose.tools.assert_equal(use_offset, tmp_form.get_useOffset()) From 53ed61841ef9e907fe041d3714dcde9761cf59ac Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Sun, 6 Mar 2016 22:04:25 +0100 Subject: [PATCH 11/15] Allowed both multiplication and scaling again --- lib/matplotlib/ticker.py | 78 +++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 7cbdfae6fe3c..9c08c6cf702b 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -417,8 +417,8 @@ class ScalarFormatter(Formatter): axes.formatter.limits rc parameter. """ - mode = {'offset': 0, 'scaling': 1, 'none': 2, } - _currentMode = 2 + _usingOffset = False + _usingScaling = False def __init__(self, useOffset=None, useMathText=None, useLocale=None): # useOffset allows plotting small data ranges with large offsets: for @@ -427,7 +427,6 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.set_useOffset(False) self.set_useScalingFactor(False) - self._currentMode = self.mode['none'] self._usetex = rcParams['text.usetex'] if useMathText is None: @@ -443,7 +442,7 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self._useLocale = useLocale def get_useScalingFactor(self): - return self._currentMode == self.mode['scaling'] + return self._usingScaling def set_useScalingFactor(self, val): """ @@ -464,13 +463,11 @@ def set_useScalingFactor(self, val): NONE """ - if val in [True, False]: - self.orderOfMagnitude = math.log10(1) - self._currentMode = self.mode['scaling'] - if val is False: - self._currentMode = self.mode['none'] + if isinstance(val,bool): + self.orderOfMagnitude = 0 + self._usingScaling = val elif isinstance(val, numbers.Number): - self._currentMode = self.mode['scaling'] + self._usingScaling = True self.orderOfMagnitude = .5*math.log10(val*val) else: raise ValueError("'val' must be a number or a boolean") @@ -479,7 +476,7 @@ def set_useScalingFactor(self, val): fset=set_useScalingFactor) def get_useOffset(self): - return self._currentMode == self.mode['offset'] + return self._usingOffset def set_useOffset(self, val): """ @@ -499,14 +496,13 @@ def set_useOffset(self, val): ------- NONE """ - if val in [True, False]: + if isinstance(val, bool): self.offsetval = 0 - self._currentMode = self.mode['offset'] - if val is False: - self._currentMode = self.mode['none'] + self._usingOffset = val elif isinstance(val, numbers.Number): - self._currentMode = self.mode['offset'] + self._usingOffset = True self.offsetval = val + print(val) else: raise ValueError("'val' must be a number or a boolean") @@ -633,19 +629,16 @@ def get_offset(self): s = '' offsetStr = '' sciNotStr = '' - if self._currentMode == self.mode['offset']: - if self._currentMode == self.mode['offset']: - offsetStr = self.format_data(self.offsetval) - if self.offsetval > 0: - offsetStr = ' +' + offsetStr - elif self._currentMode == self.mode['scaling']: - if self.orderOfMagnitude: - if self._usetex or self._useMathText: - sciNotStr = self.format_data(10 ** self.orderOfMagnitude) - else: - # sciNotStr = '%g' % 10 **self.orderOfMagnitude - sciNotStr = ('\u2A2F ' + self.format_data( - 10 ** self.orderOfMagnitude)) + if self.get_useOffset() is True: + offsetStr = self.format_data(self.offsetval) + offsetStr = ' +' + offsetStr + if self.get_useScalingFactor() is True: + if self._usetex or self._useMathText: + sciNotStr = self.format_data(10 ** self.orderOfMagnitude) + else: + # sciNotStr = '%g' % 10 **self.orderOfMagnitude + sciNotStr = ('\u2A2F ' + self.format_data( + 10 ** self.orderOfMagnitude)) # Do final formatting if self._useMathText: @@ -675,10 +668,10 @@ def set_locs(self, locs): def _set_offset(self, range): # Determine if an offset is needed and if so, set it. - # Don't do this if scaling/offset has been set of it is + # Don't do this if offset has already been set of it is # rcParams forbids automatic offset - if (self._currentMode != self.mode['none'] or - rcParams['axes.formatter.useoffset'] is False) : + if(rcParams['axes.formatter.useoffset'] is False or + self.get_useOffset() is True): return # offset of 20,001 is 20,000, for example @@ -708,12 +701,13 @@ def _set_orderOfMagnitude(self, range): # If the user has set scale/offset, their input is used # if scientific notation is to be used, find the appropriate exponent # if using an numerical offset, find the exponent after applying the - if self._currentMode != self.mode['none'] or self._scientific is False: - # User specified or unwanted + + # User specified or unwanted + if self.get_useScalingFactor() is True: return locs = np.absolute(self.locs) - if self._currentMode == self.mode['offset']: + if self._usingOffset == True: oom = math.floor(math.log10(range)) else: if locs[0] > locs[-1]: @@ -725,11 +719,9 @@ def _set_orderOfMagnitude(self, range): else: oom = math.floor(math.log10(val)) if oom <= self._powerlimits[0]: - self.orderOfMagnitude = oom - self._currentMode = self.mode['scaling'] + self.set_useScalingFactor(10**oom) elif oom >= self._powerlimits[1]: - self.orderOfMagnitude = oom - self._currentMode = self.mode['scaling'] + self.set_useScalingFactor(10**oom) else: self.orderOfMagnitude = 0 @@ -770,13 +762,7 @@ def _set_format(self, vmin, vmax): self.format = '$%s$' % _mathdefault(self.format) def pprint_val(self, x): - # Decide if we are doing offset, scale, or none - if self._currentMode == self.mode['offset']: - xp = x - self.offsetval - elif self._currentMode == self.mode['scaling']: - xp = x / (10. ** self.orderOfMagnitude) - else: - xp = x + xp = (x - self.offsetval) / (10. ** self.orderOfMagnitude) if np.absolute(xp) < 1e-8: xp = 0 From 4c86635e140c7ed07f67a866f78be5b262d55992 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Sun, 6 Mar 2016 22:29:28 +0100 Subject: [PATCH 12/15] Updated test images to handle addtion of x sign in scaling factor of the axis --- .../test_axes/formatter_large_small.pdf | Bin 7331 -> 7754 bytes .../test_axes/formatter_large_small.png | Bin 23432 -> 24232 bytes .../test_axes/formatter_large_small.svg | 210 +++---- .../test_subplots/subplots_offset_text.pdf | Bin 9260 -> 9687 bytes .../test_subplots/subplots_offset_text.png | Bin 35250 -> 35875 bytes .../test_subplots/subplots_offset_text.svg | 514 +++++++++--------- 6 files changed, 383 insertions(+), 341 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.pdf b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.pdf index ec3ad7f1ce74ea9a37e3d433cd08c33116f2a4ef..7a6275635991219e54d9c9cff29cdbe3dd9b430f 100644 GIT binary patch delta 2135 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 Pr+ImJZz|jH`SE`N0>sV@ literal 23432 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 ab4y$OPf?Qr(}U#l7)Or9wjBQa+kXKo1l4c= diff --git a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg index 20b200e11b39..d46cc72cb1a6 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg @@ -27,7 +27,7 @@ z " style="fill:#ffffff;"/> - @@ -57,20 +57,20 @@ L 518.400024 43.2 +" id="mf2b47e037d" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m40bb7b787d" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -115,22 +115,22 @@ Q 6.59375 54.828125 13.0625 64.515625 Q 19.53125 74.21875 31.78125 74.21875 " id="DejaVuSans-30"/> - + - - + + - + - + @@ -160,22 +160,22 @@ Q 44.1875 33.984375 37.640625 27.21875 Q 31.109375 20.453125 19.1875 8.296875 " id="DejaVuSans-32"/> - + - - + + - + - + @@ -199,22 +199,22 @@ L 4.890625 26.703125 z " id="DejaVuSans-34"/> - + - - + + - + - + @@ -249,22 +249,22 @@ Q 40.921875 74.21875 44.703125 73.484375 Q 48.484375 72.75 52.59375 71.296875 " id="DejaVuSans-36"/> - + - - + + - + - + @@ -307,56 +307,71 @@ Q 25.390625 66.40625 21.84375 63.234375 Q 18.3125 60.0625 18.3125 54.390625 " id="DejaVuSans-38"/> - + - - + + - + - + - + - - + + - + - + - + - - + + - + + + - - - - - - - - - - + + + + + + + + + + + + + @@ -472,152 +490,154 @@ z +" id="mefe1c72a9b" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m5d265931c5" style="stroke:#000000;stroke-width:0.5;"/> - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - + - + - + - - - + + + - - - - - - + + + + + + + + - - + + diff --git a/lib/matplotlib/tests/baseline_images/test_subplots/subplots_offset_text.pdf b/lib/matplotlib/tests/baseline_images/test_subplots/subplots_offset_text.pdf index e871bd270bf231861331a0f8d31f40d605cca68f..e8096f3d4a75d5f4451c4d7584abd37911afcabc 100644 GIT binary patch delta 3790 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 diff --git a/lib/matplotlib/tests/baseline_images/test_subplots/subplots_offset_text.png b/lib/matplotlib/tests/baseline_images/test_subplots/subplots_offset_text.png index 01d086b738d9e96249489327b1269fc82727f415..62b793ab741c5da631be844e891e31ae6d9007ad 100644 GIT binary patch literal 35875 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 - +" id="mc358fa0465" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m7e5dd47975" style="stroke:#000000;stroke-width:0.5;"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -197,20 +197,20 @@ L 0 4 +" id="m383edc5a5d" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m2fe1a75683" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -236,7 +236,7 @@ Q 6.59375 54.828125 13.0625 64.515625 Q 19.53125 74.21875 31.78125 74.21875 " id="DejaVuSans-30"/> - + @@ -244,12 +244,12 @@ Q 19.53125 74.21875 31.78125 74.21875 - + - + @@ -269,7 +269,7 @@ L 12.40625 0 z " id="DejaVuSans-31"/> - + @@ -277,12 +277,12 @@ z - + - + @@ -312,7 +312,7 @@ Q 44.1875 33.984375 37.640625 27.21875 Q 31.109375 20.453125 19.1875 8.296875 " id="DejaVuSans-32"/> - + @@ -320,12 +320,12 @@ Q 31.109375 20.453125 19.1875 8.296875 - + - + @@ -363,7 +363,7 @@ Q 53.90625 49.265625 50.4375 45.09375 Q 46.96875 40.921875 40.578125 39.3125 " id="DejaVuSans-33"/> - + @@ -371,12 +371,12 @@ Q 46.96875 40.921875 40.578125 39.3125 - + - + @@ -400,7 +400,7 @@ L 4.890625 26.703125 z " id="DejaVuSans-34"/> - + @@ -408,12 +408,12 @@ z - + - + @@ -444,7 +444,7 @@ Q 14.890625 38.140625 10.796875 36.28125 z " id="DejaVuSans-35"/> - + @@ -452,12 +452,12 @@ z - + - + @@ -492,7 +492,7 @@ Q 40.921875 74.21875 44.703125 73.484375 Q 48.484375 72.75 52.59375 71.296875 " id="DejaVuSans-36"/> - + @@ -500,12 +500,12 @@ Q 48.484375 72.75 52.59375 71.296875 - + - + @@ -521,7 +521,7 @@ L 8.203125 64.59375 z " id="DejaVuSans-37"/> - + @@ -529,12 +529,12 @@ z - + - + @@ -577,7 +577,7 @@ Q 25.390625 66.40625 21.84375 63.234375 Q 18.3125 60.0625 18.3125 54.390625 " id="DejaVuSans-38"/> - + @@ -585,12 +585,12 @@ Q 18.3125 60.0625 18.3125 54.390625 - + - + @@ -625,14 +625,29 @@ Q 16.21875 41.5 20.09375 36.953125 Q 23.96875 32.421875 30.609375 32.421875 " id="DejaVuSans-39"/> - + - + + + - - - - + + + + + + @@ -675,7 +692,7 @@ z " style="fill:#ffffff;"/> - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -833,120 +850,120 @@ L 518.4 43.2 - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -962,7 +979,7 @@ z " style="fill:#ffffff;"/> - - + - + - + @@ -1016,17 +1033,17 @@ L 274.909091 231.709091 - + - + - + @@ -1034,17 +1051,17 @@ L 274.909091 231.709091 - + - + - + @@ -1052,17 +1069,17 @@ L 274.909091 231.709091 - + - + - + @@ -1070,17 +1087,17 @@ L 274.909091 231.709091 - + - + - + @@ -1088,17 +1105,17 @@ L 274.909091 231.709091 - + - + - + @@ -1106,17 +1123,17 @@ L 274.909091 231.709091 - + - + - + @@ -1124,17 +1141,17 @@ L 274.909091 231.709091 - + - + - + @@ -1142,17 +1159,17 @@ L 274.909091 231.709091 - + - + - + @@ -1160,27 +1177,29 @@ L 274.909091 231.709091 - + - + - + - - - - - + + + + + + + @@ -1188,17 +1207,17 @@ L 274.909091 231.709091 - + - + - + @@ -1206,17 +1225,17 @@ L 274.909091 231.709091 - + - + - + @@ -1224,17 +1243,17 @@ L 274.909091 231.709091 - + - + - + @@ -1242,17 +1261,17 @@ L 274.909091 231.709091 - + - + - + @@ -1260,17 +1279,17 @@ L 274.909091 231.709091 - + - + - + @@ -1278,17 +1297,17 @@ L 274.909091 231.709091 - + - + - + @@ -1296,17 +1315,17 @@ L 274.909091 231.709091 - + - + - + @@ -1314,17 +1333,17 @@ L 274.909091 231.709091 - + - + - + @@ -1332,17 +1351,17 @@ L 274.909091 231.709091 - + - + - + @@ -1350,27 +1369,29 @@ L 274.909091 231.709091 - + - + - + - - - - - + + + + + + + @@ -1385,7 +1406,7 @@ z " style="fill:#ffffff;"/> - - + - + - + @@ -1439,176 +1460,176 @@ L 518.4 231.709091 - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - + + + + + + @@ -1637,120 +1659,120 @@ z - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1758,17 +1780,17 @@ z - - + + - - + + - - + + - - + + From 9ce9d3c3d146132f612bd793a4e7bb534815a397 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Sun, 6 Mar 2016 22:42:44 +0100 Subject: [PATCH 13/15] PEP8 issues --- lib/matplotlib/ticker.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 9c08c6cf702b..c283b252888d 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -463,7 +463,7 @@ def set_useScalingFactor(self, val): NONE """ - if isinstance(val,bool): + if isinstance(val, bool): self.orderOfMagnitude = 0 self._usingScaling = val elif isinstance(val, numbers.Number): @@ -668,8 +668,8 @@ def set_locs(self, locs): def _set_offset(self, range): # Determine if an offset is needed and if so, set it. - # Don't do this if offset has already been set of it is - # rcParams forbids automatic offset + # Don't do this if offset has already been set of it is + # rcParams forbids automatic offset if(rcParams['axes.formatter.useoffset'] is False or self.get_useOffset() is True): return @@ -707,7 +707,7 @@ def _set_orderOfMagnitude(self, range): return locs = np.absolute(self.locs) - if self._usingOffset == True: + if self.get_useOffset() is True: oom = math.floor(math.log10(range)) else: if locs[0] > locs[-1]: From 8d9d121de273f7257350a0dd899070369a004f1c Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Tue, 8 Mar 2016 11:23:27 +0100 Subject: [PATCH 14/15] Minor improvements suggested by tacaswell --- lib/matplotlib/ticker.py | 6 ++---- setup.cfg.template | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index c283b252888d..88c9986a5b78 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -417,8 +417,6 @@ class ScalarFormatter(Formatter): axes.formatter.limits rc parameter. """ - _usingOffset = False - _usingScaling = False def __init__(self, useOffset=None, useMathText=None, useLocale=None): # useOffset allows plotting small data ranges with large offsets: for @@ -454,7 +452,7 @@ def set_useScalingFactor(self, val): Parameters ---------- - val : (True|False|numeric) + val : bool or scalar Enable, disable, or sets and enables the use of scaling factor in the axis. @@ -541,7 +539,7 @@ def set_scientific(self, b): Parameters ---------- - b : (True|False) + b : bool Enable, disable scientific notation Returns diff --git a/setup.cfg.template b/setup.cfg.template index 3d1ef1ebb024..cae6f678e19f 100644 --- a/setup.cfg.template +++ b/setup.cfg.template @@ -13,7 +13,7 @@ # set this to True. It will download and build a specific version of # FreeType, and then use that to build the ft2font extension. This # ensures that test images are exactly reproducible. -local_freetype = True +#local_freetype = False [status] # To suppress display of the dependencies and their versions From 2737c5cb363186166e21423f1e6c5ab121a32596 Mon Sep 17 00:00:00 2001 From: Vincent Vandalon Date: Thu, 17 Mar 2016 14:28:48 +0100 Subject: [PATCH 15/15] - Improved documentation with the suggestions of tacaswell. - Refactored functionality of ScalarFormatter to be more readable - Separated logic deciding to perform auto scaling / offset from functions calculating the best possible scaling / offset values - Grouped methods in a logical way (user interaction, inherited, and local) - Removed space before the times sign in the scientific notation / scaling. Changed test images to reflect this. - Changed rcparam test back to original function - Removed _scientific boolean and the function set_scientific() as they were not used anywhere (just grep the original file). The existence of the function and boolean might mislead the user that changing this bool might affect the plotting. --- .../test_axes/formatter_large_small.pdf | Bin 7754 -> 7686 bytes .../test_axes/formatter_large_small.png | Bin 24232 -> 24203 bytes .../test_axes/formatter_large_small.svg | 108 +++-- .../test_subplots/subplots_offset_text.pdf | Bin 9687 -> 9562 bytes .../test_subplots/subplots_offset_text.png | Bin 35875 -> 36193 bytes .../test_subplots/subplots_offset_text.svg | 383 +++++++++--------- lib/matplotlib/tests/test_ticker.py | 7 +- lib/matplotlib/ticker.py | 207 +++++----- 8 files changed, 353 insertions(+), 352 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.pdf b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.pdf index 7a6275635991219e54d9c9cff29cdbe3dd9b430f..4153a491362a213e6ed47e3aeb82b88b266880b8 100644 GIT binary patch delta 1644 zcmZWneNyMamVU6E1opZBtT00V1 z77}k9_^8i*+s5d|p{FiRahv*Cmqie1;XIlF$aZ$rEGoRsW{X6|3OB0*se zzN_F#mbDOBE9+k!g*|7<3QF2zMF~5xpyo)~rJe*LlHN%k6OZhTyL^wcHF&H4@_XSN zZJi)V{2eV8t~H+6c}&v%vSs|}SH53}v^tJ9qa<>>uGQ(hebe0wMmHO0#q({Rn)Krl z>-%6qhjjb-#(G5R0-oDryRah#u8G0%1?8kLm#avV(tE7jG$fZaRm)}=@V?MX6 zym0K`BJ!3lG>(hL%PPG*^<^s7ECN)@HJTg+@Reofsx3_$Im zoZotSvrs=W_t0v`tQV_}e^6HtTvK7? z=AS54$o`1=^~J{a7T+~z?GHOvEdB7-XZOpJRz8^*CjAz+4Rh^vxE%;Br_Gg)7K%Eq zLjD=S%D@?k$+J3K!d`es7YU_@3X?q#P>MEVv0Hp`=$lB9aM1P&t?H&yUNN)5H0cMAHz>Z8kFgO^(lWdiwnZ1E@;{Uv_wRjqenr(%Kq!hN3x)>esl zF-o!TjE4HnRZYp};o4!_9scg#WEq=dchvtd27`$M(=|9XWGu)_ zP0vdKkvC3GdOipflYy+1>~xhJL?DX`@Kj2QW?76yqsq+&5oFRSNXb@#2s-H~(K#mgQ*FPC5!O5$MoHf6Pc%5SjHz@CA^27p zWR39!1U2qdtpMd)<%40u8pEg)S)`i(%?Jx1tHLm0Ek@7)tAq#!QFoZy3?dL%?F^|nyl`Y?RRx-cKJ{2WvB2?AgmK~A`bvjju{4tRMj I5k&z10->BjT>t<8 delta 1659 zcmZuuYfuws6g4Q1gcw9=Bm#ALM1lme&mRe46(83_Ga^UBJEA?h->8_WaI zr*Z}>nButF_hX=PqmEkn#huzKJsmMcrGtyHd4H(dbI;sUaW{-i3N<#mL4%{Q zWi`x<{+fdG)fdP7LP|eBDX!W7L!|?&epa^GpsnL^o&6EUdbNy6uOUv{TD`4J6cJ8H z!Xh(U6@z=Zm&2-W3%`4>A`V`@NK_rUYuFn`qGH!YcwRp&DPn8bn|usWBa#zG58PV6 zR>Lw^9QEm_(gwO~lL143hKn$8iCU&z9h^v&3_O2QDA`lM-ST%wY_!C8;=_WhIJhjT zhjQOOW6BJJ(Pc*RUkTD||OYx^nzZT5w*df_w9y*mE*wiU_baS-5Ps~o? z&lo7~(v+u;nNnn71=o1@^Yz2+JromV#Nljm;4#;VwJ^Aoxwr#S^&b=eGfI!Ex1|>z z`8Zenl~d7PuG5BQye%Ke9x%HOf0JQHTe^8}X+!@^gSlq@#;SDI8V zNmVJO;%yeBNJyqZ5C8%eAb_#|Iepcvcna~mGt(vrCH`^_UXLAWnOzS!sE1bHZ~(ld z2V2|9eV1ODJk8wF&_vRjSIWox-HJwcmmfTY}?E4xyGe;L$GN;fZFPXC=s>%7@ zBAH6*sH;+)yG*$FpW$|2@9tB(g?zBiJ&l0vf(aKph-kI<)64D1i$A0K=|}B1Qiv8R zhuBSBLr7^H;wd$Suy^DThiI9E7o9`!97l+&eU~mejNR={$1b{7x$(BMc1z^~MX}m;5ni7DKsYa$$sQ_Sfs*uY_85A^C zsM5&>e+nncc98!IECr31vNbIgfU&8LRF<@v$Y6Cb(&RFD85|BkuT@0og8dF4ABI5z zC?HxFL^widU=p7X@*%N=@N!E?5?aPt4j>0;uK~!%grwcKI6g!=eTx%7WR$l# R!W;!4hSAvU7180e{{X+=SL^@) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.png b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.png index bde3aaaf4495323068e00d7653a3a22b0ad0a7da..3f190ada40eabdd39710689e6d785f9649d62cb9 100644 GIT binary patch literal 24203 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 literal 24232 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 Pr+ImJZz|jH`SE`N0>sV@ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg index d46cc72cb1a6..e4adf17ebe78 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/formatter_large_small.svg @@ -27,7 +27,7 @@ z " style="fill:#ffffff;"/> - @@ -57,20 +57,20 @@ L 518.400024 43.2 +" id="mba60ea3162" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="mce2f64bc1a" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -125,12 +125,12 @@ Q 19.53125 74.21875 31.78125 74.21875 - + - + @@ -170,12 +170,12 @@ Q 31.109375 20.453125 19.1875 8.296875 - + - + @@ -209,12 +209,12 @@ z - + - + @@ -259,12 +259,12 @@ Q 48.484375 72.75 52.59375 71.296875 - + - + @@ -317,12 +317,12 @@ Q 18.3125 60.0625 18.3125 54.390625 - + - + @@ -337,12 +337,12 @@ Q 18.3125 60.0625 18.3125 54.390625 - + - + @@ -355,7 +355,7 @@ Q 18.3125 60.0625 18.3125 54.390625 - + - +" id="DejaVuSans-d7"/> + - - - - - - - - - - - - - + + + + + + + + + + + + @@ -490,20 +489,20 @@ z +" id="mee99d10694" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m2594efdd5d" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -519,12 +518,12 @@ L -4 0 - + - + @@ -540,12 +539,12 @@ L -4 0 - + - + @@ -561,12 +560,12 @@ L -4 0 - + - + @@ -582,12 +581,12 @@ L -4 0 - + - + @@ -603,12 +602,12 @@ L -4 0 - + - + @@ -622,21 +621,20 @@ L -4 0 - + - - - - - - + + + + + - + diff --git a/lib/matplotlib/tests/baseline_images/test_subplots/subplots_offset_text.pdf b/lib/matplotlib/tests/baseline_images/test_subplots/subplots_offset_text.pdf index e8096f3d4a75d5f4451c4d7584abd37911afcabc..74865a7099789aad3e03d99f9412ff5c04d691ff 100644 GIT binary patch delta 3314 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�a*FAE6| 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 - +" id="m011d0b1b33" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="mfab0ff5c46" style="stroke:#000000;stroke-width:0.5;"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -197,20 +197,20 @@ L 0 4 +" id="mdb070ec867" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m796a5876a4" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -244,12 +244,12 @@ Q 19.53125 74.21875 31.78125 74.21875 - + - + @@ -277,12 +277,12 @@ z - + - + @@ -320,12 +320,12 @@ Q 31.109375 20.453125 19.1875 8.296875 - + - + @@ -371,12 +371,12 @@ Q 46.96875 40.921875 40.578125 39.3125 - + - + @@ -408,12 +408,12 @@ z - + - + @@ -452,12 +452,12 @@ z - + - + @@ -500,12 +500,12 @@ Q 48.484375 72.75 52.59375 71.296875 - + - + @@ -529,12 +529,12 @@ z - + - + @@ -585,12 +585,12 @@ Q 18.3125 60.0625 18.3125 54.390625 - + - + @@ -631,7 +631,7 @@ Q 23.96875 32.421875 30.609375 32.421875 - + - +" id="DejaVuSans-d7"/> - - - - - + + + + @@ -692,7 +690,7 @@ z " style="fill:#ffffff;"/> - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -850,120 +848,120 @@ L 518.4 43.2 - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -979,7 +977,7 @@ z " style="fill:#ffffff;"/> - - + - + @@ -1033,12 +1031,12 @@ L 274.909091 231.709091 - + - + @@ -1051,12 +1049,12 @@ L 274.909091 231.709091 - + - + @@ -1069,12 +1067,12 @@ L 274.909091 231.709091 - + - + @@ -1087,12 +1085,12 @@ L 274.909091 231.709091 - + - + @@ -1105,12 +1103,12 @@ L 274.909091 231.709091 - + - + @@ -1123,12 +1121,12 @@ L 274.909091 231.709091 - + - + @@ -1141,12 +1139,12 @@ L 274.909091 231.709091 - + - + @@ -1159,12 +1157,12 @@ L 274.909091 231.709091 - + - + @@ -1177,12 +1175,12 @@ L 274.909091 231.709091 - + - + @@ -1193,13 +1191,12 @@ L 274.909091 231.709091 - - - - - - - + + + + + + @@ -1207,12 +1204,12 @@ L 274.909091 231.709091 - + - + @@ -1225,12 +1222,12 @@ L 274.909091 231.709091 - + - + @@ -1243,12 +1240,12 @@ L 274.909091 231.709091 - + - + @@ -1261,12 +1258,12 @@ L 274.909091 231.709091 - + - + @@ -1279,12 +1276,12 @@ L 274.909091 231.709091 - + - + @@ -1297,12 +1294,12 @@ L 274.909091 231.709091 - + - + @@ -1315,12 +1312,12 @@ L 274.909091 231.709091 - + - + @@ -1333,12 +1330,12 @@ L 274.909091 231.709091 - + - + @@ -1351,12 +1348,12 @@ L 274.909091 231.709091 - + - + @@ -1369,12 +1366,12 @@ L 274.909091 231.709091 - + - + @@ -1385,13 +1382,12 @@ L 274.909091 231.709091 - + - - - - - + + + + @@ -1406,7 +1402,7 @@ z " style="fill:#ffffff;"/> - - + - + @@ -1460,12 +1456,12 @@ L 518.4 231.709091 - + - + @@ -1479,12 +1475,12 @@ L 518.4 231.709091 - + - + @@ -1498,12 +1494,12 @@ L 518.4 231.709091 - + - + @@ -1517,12 +1513,12 @@ L 518.4 231.709091 - + - + @@ -1536,12 +1532,12 @@ L 518.4 231.709091 - + - + @@ -1555,12 +1551,12 @@ L 518.4 231.709091 - + - + @@ -1574,12 +1570,12 @@ L 518.4 231.709091 - + - + @@ -1593,12 +1589,12 @@ L 518.4 231.709091 - + - + @@ -1612,12 +1608,12 @@ L 518.4 231.709091 - + - + @@ -1631,6 +1627,7 @@ L 518.4 231.709091 + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -1780,16 +1777,16 @@ z - + - + - + - + diff --git a/lib/matplotlib/tests/test_ticker.py b/lib/matplotlib/tests/test_ticker.py index 92c3201e852a..0ccd4463fa5c 100644 --- a/lib/matplotlib/tests/test_ticker.py +++ b/lib/matplotlib/tests/test_ticker.py @@ -350,11 +350,12 @@ def test_logformatter_pprint(): yield _pprint_helper, value, domain, expected -def test_use_offset(): - for use_offset in [False]: +def test_use_automatic_offset(): + for use_offset in [True, False]: with matplotlib.rc_context({'axes.formatter.useoffset': use_offset}): tmp_form = mticker.ScalarFormatter() - nose.tools.assert_equal(use_offset, tmp_form.get_useOffset()) + nose.tools.assert_equal(use_offset, + tmp_form.get_useAutomaticOffset()) def test_formatstrformatter(): diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index 88c9986a5b78..2d1399535c90 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -425,6 +425,9 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self.set_useOffset(False) self.set_useScalingFactor(False) + self.set_powerlimits(rcParams['axes.formatter.limits']) + self._rc_automatic_offset = rcParams['axes.formatter.useoffset'] + self._offsetString = None self._usetex = rcParams['text.usetex'] if useMathText is None: @@ -432,13 +435,12 @@ def __init__(self, useOffset=None, useMathText=None, useLocale=None): self._useMathText = useMathText self.orderOfMagnitude = 0 self.format = '' - self._scientific = True - self._offsetString = None - self._powerlimits = rcParams['axes.formatter.limits'] if useLocale is None: useLocale = rcParams['axes.formatter.use_locale'] self._useLocale = useLocale + # Functions with which the user is expected to interact + def get_useScalingFactor(self): return self._usingScaling @@ -500,12 +502,23 @@ def set_useOffset(self, val): elif isinstance(val, numbers.Number): self._usingOffset = True self.offsetval = val - print(val) else: raise ValueError("'val' must be a number or a boolean") useOffset = property(fget=get_useOffset, fset=set_useOffset) + def set_useAutomaticOffset(self, val): + if val in [True, False]: + self._rc_automatic_offset = val + else: + raise ValueError("'val' must be a number or a boolean") + + def get_useAutomaticOffset(self): + return self._rc_automatic_offset + + useAutomaticOffset = property(fget=get_useAutomaticOffset, + fset=set_useAutomaticOffset) + def get_useLocale(self): return self._useLocale @@ -517,36 +530,22 @@ def set_useLocale(self, val): useLocale = property(fget=get_useLocale, fset=set_useLocale) - def fix_minus(self, s): - """use a unicode minus rather than hyphen""" - if rcParams['text.usetex'] or not rcParams['axes.unicode_minus']: - return s - else: - return s.replace('-', '\u2212') - - def __call__(self, x, pos=None): - 'Return the format for tick val *x* at position *pos*' - if len(self.locs) == 0: - return '' - else: - s = self.pprint_val(x) - return self.fix_minus(s) - - def set_scientific(self, b): + def set_offset_string(self, value): """ - Enable/disable scientific notation - see also :meth:`set_powerlimits` + Set the string which typically contains the offset + or the scaling factor which is to be displayed on the axis. + Set this to None to allow the string set by offset or scaling + algorithm. Parameters ---------- - b : bool - Enable, disable scientific notation + s : String describing the offset Returns ------- - NONE + None """ - self._scientific = bool(b) + self._offsetString = value def set_powerlimits(self, lims): """ @@ -554,7 +553,6 @@ def set_powerlimits(self, lims): e.g., ``formatter.set_powerlimits((-3, 4))`` sets the pre-2007 default in which scientific notation is used for numbers less than 1e-3 or greater than 1e4. - See also :meth:`set_scientific`. Parameters ---------- @@ -570,38 +568,15 @@ def set_powerlimits(self, lims): raise ValueError("'lims' must be a sequence of length 2") self._powerlimits = lims - def format_data_short(self, value): - """return a short formatted string representation of a number""" - if self._useLocale: - return locale.format_string('%-12g', (value,)) - else: - return '%-12g' % value + # Inherited functions from Formatter which will be called by matplotlib - def format_data(self, value): - 'return a formatted string representation of a number' - if self._useLocale: - s = locale.format_string('%1.10e', (value,)) + def __call__(self, x, pos=None): + 'Return the format for tick val *x* at position *pos*' + if len(self.locs) == 0: + return '' else: - s = '%1.10e' % value - s = self._formatSciNotation(s) - return self.fix_minus(s) - - def set_offset_string(self, value): - """ - Set the string which typically contains the offset - or the scaling factor which is to be displayed on the axis. - Set this to None to allow the string set by offset or scaling - algorithm. - - Parameters - ---------- - s: String describing the offset - - Returns - ------- - None - """ - self._offsetString = value + s = self.pprint_val(x) + return self.fix_minus(s) def get_offset(self): """ @@ -610,13 +585,9 @@ def get_offset(self): next to the ticks, either determined by offset/scaling or set by the user - Parameters - ---------- - NONE - Returns ------- - :string + string """ # String has been set manually, so just return that if self._offsetString is not None: @@ -634,8 +605,9 @@ def get_offset(self): if self._usetex or self._useMathText: sciNotStr = self.format_data(10 ** self.orderOfMagnitude) else: - # sciNotStr = '%g' % 10 **self.orderOfMagnitude - sciNotStr = ('\u2A2F ' + self.format_data( + # According to Wikipedia this is the accepted unicode + # character for the multiplication sign + sciNotStr = ('\u00D7' + self.format_data( 10 ** self.orderOfMagnitude)) # Do final formatting @@ -654,30 +626,76 @@ def get_offset(self): def set_locs(self, locs): 'set the locations of the ticks' + # Calculate automatic scaling factor / scientific notation + # and automatic offset value. This communicates with pprint_val() + # which subtracts the offset and scales the result self.locs = locs if len(self.locs) > 0: vmin, vmax = self.axis.get_view_interval() - d = abs(vmax - vmin) - self._set_offset(d) - - self._set_orderOfMagnitude(d) + range = abs(vmax - vmin) + + # Automatic offsets are needed if not disabled by rcParam + # nor if an offset has already been set + if(self.get_useAutomaticOffset() is True and + self.get_useOffset() is False): + autoOffset = self._calculateAutomaticOffset(range) + self.set_useOffset(autoOffset) + + # Automatic scaling/scientific notation is needed if not + # already been set + if self.get_useScalingFactor() is False: + autoScalFac = self._calculateAutomaticScaling(range) + self.set_useScalingFactor(autoScalFac) + + # Set the format string for the ticks self._set_format(vmin, vmax) - def _set_offset(self, range): - # Determine if an offset is needed and if so, set it. - # Don't do this if offset has already been set of it is - # rcParams forbids automatic offset - if(rcParams['axes.formatter.useoffset'] is False or - self.get_useOffset() is True): - return + def pprint_val(self, x): + # apply offset and scaling/scientific notation here + xp = (x - self.offsetval) / (10. ** self.orderOfMagnitude) + + if np.absolute(xp) < 1e-8: + xp = 0 + if self._useLocale: + return locale.format_string(self.format, (xp,)) + else: + return self.format % xp + + def fix_minus(self, s): + """use a unicode minus rather than hyphen""" + if rcParams['text.usetex'] or not rcParams['axes.unicode_minus']: + return s + else: + return s.replace('-', '\u2212') + + def format_data_short(self, value): + """return a short formatted string representation of a number""" + if self._useLocale: + return locale.format_string('%-12g', (value,)) + else: + return '%-12g' % value + + def format_data(self, value): + 'return a formatted string representation of a number' + if self._useLocale: + s = locale.format_string('%1.10e', (value,)) + else: + s = '%1.10e' % value + s = self._formatSciNotation(s) + return self.fix_minus(s) + + # Functions specific to ScalarFormatter from here on out + + def _calculateAutomaticOffset(self, range): + # Just calculate the automatic offset. + # Return False if no offset is needed. # offset of 20,001 is 20,000, for example locs = self.locs if locs is None or not len(locs) or range == 0: - self.set_useOffset(False) - return + return False vmin, vmax = sorted(self.axis.get_view_interval()) locs = np.asarray(locs) locs = locs[(vmin <= locs) & (locs <= vmax)] @@ -689,20 +707,17 @@ def _set_offset(self, range): if np.absolute(ave_oom - range_oom) >= 3: # four sig-figs p10 = 10 ** range_oom if ave_loc < 0: - self.set_useOffset((math.ceil(np.max(locs) / p10) * p10)) + return math.ceil(np.max(locs) / p10) * p10 else: - self.set_useOffset((math.floor(np.min(locs) / p10) * p10)) + return math.floor(np.min(locs) / p10) * p10 else: - self.set_useOffset(False) - - def _set_orderOfMagnitude(self, range): - # If the user has set scale/offset, their input is used - # if scientific notation is to be used, find the appropriate exponent - # if using an numerical offset, find the exponent after applying the + return False + else: + return False - # User specified or unwanted - if self.get_useScalingFactor() is True: - return + def _calculateAutomaticScaling(self, range): + # calculate and return the automatic scaling factor. + # Return false if no scaling was needed. locs = np.absolute(self.locs) if self.get_useOffset() is True: @@ -717,11 +732,11 @@ def _set_orderOfMagnitude(self, range): else: oom = math.floor(math.log10(val)) if oom <= self._powerlimits[0]: - self.set_useScalingFactor(10**oom) + return 10**oom elif oom >= self._powerlimits[1]: - self.set_useScalingFactor(10**oom) + return 10**oom else: - self.orderOfMagnitude = 0 + return False def _set_format(self, vmin, vmax): # set the format string to format all the ticklabels @@ -759,16 +774,6 @@ def _set_format(self, vmin, vmax): elif self._useMathText: self.format = '$%s$' % _mathdefault(self.format) - def pprint_val(self, x): - xp = (x - self.offsetval) / (10. ** self.orderOfMagnitude) - - if np.absolute(xp) < 1e-8: - xp = 0 - if self._useLocale: - return locale.format_string(self.format, (xp,)) - else: - return self.format % xp - def _formatSciNotation(self, s): # transform 1e+004 into 1e4, for example if self._useLocale: