@@ -1075,7 +1075,7 @@ def _non_decade_format(self, sign_string, base, fx, usetex):
10751075 return (r'$%s%s^{%.2f}$' ) % (sign_string , base , fx )
10761076 else :
10771077 return ('$%s$' % _mathdefault ('%s%s^{%.2f}' %
1078- (sign_string , base , fx )))
1078+ (sign_string , base , fx )))
10791079
10801080 def __call__ (self , x , pos = None ):
10811081 """
@@ -1084,6 +1084,8 @@ def __call__(self, x, pos=None):
10841084 The position `pos` is ignored.
10851085 """
10861086 usetex = rcParams ['text.usetex' ]
1087+ min_exp = rcParams ['axes.formatter.min_exponent' ]
1088+
10871089 if x == 0 : # Symlog
10881090 if usetex :
10891091 return '$0$'
@@ -1099,6 +1101,8 @@ def __call__(self, x, pos=None):
10991101 is_x_decade = is_close_to_int (fx )
11001102 exponent = np .round (fx ) if is_x_decade else np .floor (fx )
11011103 coeff = np .round (x / b ** exponent )
1104+ if is_x_decade :
1105+ fx = nearest_long (fx )
11021106
11031107 if self .labelOnlyBase and not is_x_decade :
11041108 return ''
@@ -1111,7 +1115,13 @@ def __call__(self, x, pos=None):
11111115 else :
11121116 base = '%s' % b
11131117
1114- if not is_x_decade :
1118+ if np .abs (fx ) < min_exp :
1119+ if usetex :
1120+ return r'${0}{1:g}$' .format (sign_string , x )
1121+ else :
1122+ return '${0}$' .format (_mathdefault (
1123+ '{0}{1:g}' .format (sign_string , x )))
1124+ elif not is_x_decade :
11151125 return self ._non_decade_format (sign_string , base , fx , usetex )
11161126 else :
11171127 if usetex :
0 commit comments