Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7935c5a

Browse files
committed
FIX: move titles up if overlap axes
1 parent 53c5d76 commit 7935c5a

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

lib/matplotlib/axes/_base.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2478,27 +2478,38 @@ def _update_title_position(self, renderer):
24782478
ymax = -10
24792479
for title in titles:
24802480
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))
24832484
# need to check all our twins too...
24842485
axs = self._twinned_axes.get_siblings(self)
24852486

2487+
top = 0
24862488
for ax in axs:
24872489
try:
2488-
bb = ax.get_window_extent(renderer)
24892490
if (ax.xaxis.get_label_position() == 'top'
24902491
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))
25002496
except AttributeError:
2497+
# this happens for an empty bb
25012498
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))
25022513
ymax = np.max((y, ymax))
25032514
for title in titles:
25042515
# now line up all the titles at the highest baseline.

0 commit comments

Comments
 (0)