@@ -1084,7 +1084,7 @@ def _non_decade_format(self, sign_string, base, fx, usetex):
10841084 return (r'$%s%s^{%.2f}$' ) % (sign_string , base , fx )
10851085 else :
10861086 return ('$%s$' % _mathdefault ('%s%s^{%.2f}' %
1087- (sign_string , base , fx )))
1087+ (sign_string , base , fx )))
10881088
10891089 def __call__ (self , x , pos = None ):
10901090 """
@@ -1093,6 +1093,8 @@ def __call__(self, x, pos=None):
10931093 The position `pos` is ignored.
10941094 """
10951095 usetex = rcParams ['text.usetex' ]
1096+ min_exp = rcParams ['axes.formatter.min_exponent' ]
1097+
10961098 if x == 0 : # Symlog
10971099 if usetex :
10981100 return '$0$'
@@ -1108,6 +1110,8 @@ def __call__(self, x, pos=None):
11081110 is_x_decade = is_close_to_int (fx )
11091111 exponent = np .round (fx ) if is_x_decade else np .floor (fx )
11101112 coeff = np .round (x / b ** exponent )
1113+ if is_x_decade :
1114+ fx = nearest_long (fx )
11111115
11121116 if self .labelOnlyBase and not is_x_decade :
11131117 return ''
@@ -1120,7 +1124,13 @@ def __call__(self, x, pos=None):
11201124 else :
11211125 base = '%s' % b
11221126
1123- if not is_x_decade :
1127+ if np .abs (fx ) < min_exp :
1128+ if usetex :
1129+ return r'${0}{1:g}$' .format (sign_string , x )
1130+ else :
1131+ return '${0}$' .format (_mathdefault (
1132+ '{0}{1:g}' .format (sign_string , x )))
1133+ elif not is_x_decade :
11241134 return self ._non_decade_format (sign_string , base , fx , usetex )
11251135 else :
11261136 if usetex :
0 commit comments