@@ -1315,6 +1315,21 @@ def _get_tick(self, major):
1315
1315
"""Return the default tick instance."""
1316
1316
raise NotImplementedError ('derived must override' )
1317
1317
1318
+ def _get_tick_label_size (self , axis_name , major ):
1319
+ """
1320
+ Return the text size of tick labels for this Axis.
1321
+
1322
+ This is a convenience function to avoid having to create a `Tick` in
1323
+ `.get_tick_space`, since it is expensive.
1324
+ """
1325
+ if major :
1326
+ tick_kw = self ._major_tick_kw
1327
+ else :
1328
+ tick_kw = self ._minor_tick_kw
1329
+ size = tick_kw .get ('labelsize' ,
1330
+ mpl .rcParams [f'{ axis_name } tick.labelsize' ])
1331
+ return mtext .FontProperties (size ).get_size_in_points ()
1332
+
1318
1333
def _copy_tick_props (self , src , dest ):
1319
1334
"""Copy the properties from *src* tick to *dest* tick."""
1320
1335
if src is None or dest is None :
@@ -2186,10 +2201,9 @@ def set_default_intervals(self):
2186
2201
def get_tick_space (self ):
2187
2202
ends = self .axes .transAxes .transform ([[0 , 0 ], [1 , 0 ]])
2188
2203
length = ((ends [1 ][0 ] - ends [0 ][0 ]) / self .axes .figure .dpi ) * 72
2189
- tick = self ._get_tick (True )
2190
2204
# There is a heuristic here that the aspect ratio of tick text
2191
2205
# is no more than 3:1
2192
- size = tick . label1 . get_size ( ) * 3
2206
+ size = self . _get_tick_label_size ( 'x' , True ) * 3
2193
2207
if size > 0 :
2194
2208
return int (np .floor (length / size ))
2195
2209
else :
@@ -2472,9 +2486,8 @@ def set_default_intervals(self):
2472
2486
def get_tick_space (self ):
2473
2487
ends = self .axes .transAxes .transform ([[0 , 0 ], [0 , 1 ]])
2474
2488
length = ((ends [1 ][1 ] - ends [0 ][1 ]) / self .axes .figure .dpi ) * 72
2475
- tick = self ._get_tick (True )
2476
2489
# Having a spacing of at least 2 just looks good.
2477
- size = tick . label1 . get_size ( ) * 2.0
2490
+ size = self . _get_tick_label_size ( 'y' , True ) * 2
2478
2491
if size > 0 :
2479
2492
return int (np .floor (length / size ))
2480
2493
else :
0 commit comments