@@ -2478,27 +2478,38 @@ def _update_title_position(self, renderer):
2478
2478
ymax = - 10
2479
2479
for title in titles :
2480
2480
x , y0 = title .get_position ()
2481
- y = y0
2482
- bt = title .get_window_extent (renderer )
2481
+ y = 1
2482
+ # need to start agin in case of window resizing
2483
+ title .set_position ((x , 1.0 ))
2483
2484
# need to check all our twins too...
2484
2485
axs = self ._twinned_axes .get_siblings (self )
2485
2486
2487
+ top = 0
2486
2488
for ax in axs :
2487
2489
try :
2488
- bb = ax .get_window_extent (renderer )
2489
2490
if (ax .xaxis .get_label_position () == 'top'
2490
2491
or ax .xaxis .get_ticks_position () == 'top' ):
2491
- bb = mtransforms .Bbox .union ([bb ,
2492
- ax .xaxis .get_tightbbox (renderer )])
2493
- # need to do twice to get right for manual resizing
2494
- dy = bt .ymin - bb .ymax
2495
- if dy < 0 :
2496
- y = self .transAxes .inverted ().transform (
2497
- (0. , bb .ymax - dy ))[1 ]
2498
- title .set_position ((x , y ))
2499
- #bt = title.get_window_extent(renderer)
2492
+ bb = ax .xaxis .get_tightbbox (renderer )
2493
+ else :
2494
+ bb = ax .get_window_extent (renderer )
2495
+ top = np .max ((top , bb .ymax ))
2500
2496
except AttributeError :
2497
+ # this happens for an empty bb
2501
2498
y = 1
2499
+ bt = title .get_window_extent (renderer )
2500
+ # need to do twice to get right for manual resizing
2501
+ for nn in range (1 ):
2502
+ dy = bt .ymin - top
2503
+ if dy < 0 :
2504
+ y = self .transAxes .inverted ().transform (
2505
+ (0. , top ))[1 ]
2506
+ title .set_position ((x , y ))
2507
+ bt = title .get_window_extent (renderer )
2508
+ dy = bt .ymin - top
2509
+ if dy < 0 :
2510
+ y = self .transAxes .inverted ().transform (
2511
+ (0. , top - dy ))[1 ]
2512
+ title .set_position ((x , y ))
2502
2513
ymax = np .max ((y , ymax ))
2503
2514
for title in titles :
2504
2515
# now line up all the titles at the highest baseline.
0 commit comments