@@ -932,17 +932,15 @@ def iter_ticks(self):
932
932
"""
933
933
Iterate through all of the major and minor ticks.
934
934
"""
935
- major_locs = self .major .locator ()
936
- major_ticks = self .get_major_ticks (len (major_locs ))
935
+ major_locs = self .get_majorticklocs ()
937
936
self .major .formatter .set_locs (major_locs )
938
937
major_labels = self .major .formatter .format_ticks (major_locs )
939
-
940
- minor_locs = self . minor . locator ( )
941
- minor_ticks = self .get_minor_ticks ( len ( minor_locs ) )
938
+ major_ticks = self . get_major_ticks ( len ( major_locs ))
939
+ yield from zip ( major_ticks , major_locs , major_labels )
940
+ minor_locs = self .get_minorticklocs ( )
942
941
self .minor .formatter .set_locs (minor_locs )
943
942
minor_labels = self .minor .formatter .format_ticks (minor_locs )
944
-
945
- yield from zip (major_ticks , major_locs , major_labels )
943
+ minor_ticks = self .get_minor_ticks (len (minor_locs ))
946
944
yield from zip (minor_ticks , minor_locs , minor_labels )
947
945
948
946
def get_ticklabel_extents (self , renderer ):
@@ -1223,18 +1221,29 @@ def get_ticklines(self, minor=False):
1223
1221
return self .get_majorticklines ()
1224
1222
1225
1223
def get_majorticklocs (self ):
1226
- "Get the major tick locations in data coordinates as a numpy array "
1224
+ """ Get the array of major tick locations in data coordinates."" "
1227
1225
return self .major .locator ()
1228
1226
1229
1227
def get_minorticklocs (self ):
1230
- "Get the minor tick locations in data coordinates as a numpy array"
1231
- return self .minor .locator ()
1228
+ """Get the array of minor tick locations in data coordinates."""
1229
+ # Remove minor ticks duplicating major ticks.
1230
+ major_locs = self .major .locator ()
1231
+ minor_locs = self .minor .locator ()
1232
+ transform = self ._scale .get_transform ()
1233
+ tr_minor_locs = transform .transform (minor_locs )
1234
+ tr_major_locs = transform .transform (major_locs )
1235
+ lo , hi = sorted (transform .transform (self .get_view_interval ()))
1236
+ # Use the transformed view limits as scale. 1e-5 is the default rtol
1237
+ # for np.isclose.
1238
+ tol = (hi - lo ) * 1e-5
1239
+ minor_locs = [
1240
+ loc for loc , tr_loc in zip (minor_locs , tr_minor_locs )
1241
+ if not np .isclose (tr_loc , tr_major_locs , atol = tol , rtol = 0 ).any ()]
1242
+ return minor_locs
1232
1243
1233
1244
def get_ticklocs (self , minor = False ):
1234
- "Get the tick locations in data coordinates as a numpy array"
1235
- if minor :
1236
- return self .minor .locator ()
1237
- return self .major .locator ()
1245
+ """Get the array of tick locations in data coordinates."""
1246
+ return self .get_minorticklocs () if minor else self .get_majorticklocs ()
1238
1247
1239
1248
def get_ticks_direction (self , minor = False ):
1240
1249
"""
0 commit comments