@@ -1315,6 +1315,18 @@ 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 ):
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
+ tick_kw = self ._major_tick_kw
1326
+ size = tick_kw .get ('labelsize' ,
1327
+ mpl .rcParams [f'{ axis_name } tick.labelsize' ])
1328
+ return mtext .FontProperties (size ).get_size_in_points ()
1329
+
1318
1330
def _copy_tick_props (self , src , dest ):
1319
1331
"""Copy the properties from *src* tick to *dest* tick."""
1320
1332
if src is None or dest is None :
@@ -2186,10 +2198,9 @@ def set_default_intervals(self):
2186
2198
def get_tick_space (self ):
2187
2199
ends = self .axes .transAxes .transform ([[0 , 0 ], [1 , 0 ]])
2188
2200
length = ((ends [1 ][0 ] - ends [0 ][0 ]) / self .axes .figure .dpi ) * 72
2189
- tick = self ._get_tick (True )
2190
2201
# There is a heuristic here that the aspect ratio of tick text
2191
2202
# is no more than 3:1
2192
- size = tick . label1 . get_size ( ) * 3
2203
+ size = self . _get_tick_label_size ( 'x' ) * 3
2193
2204
if size > 0 :
2194
2205
return int (np .floor (length / size ))
2195
2206
else :
@@ -2472,9 +2483,8 @@ def set_default_intervals(self):
2472
2483
def get_tick_space (self ):
2473
2484
ends = self .axes .transAxes .transform ([[0 , 0 ], [0 , 1 ]])
2474
2485
length = ((ends [1 ][1 ] - ends [0 ][1 ]) / self .axes .figure .dpi ) * 72
2475
- tick = self ._get_tick (True )
2476
2486
# Having a spacing of at least 2 just looks good.
2477
- size = tick . label1 . get_size ( ) * 2.0
2487
+ size = self . _get_tick_label_size ( 'y' ) * 2
2478
2488
if size > 0 :
2479
2489
return int (np .floor (length / size ))
2480
2490
else :
0 commit comments