Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit7ca3d97

Browse files
committed
Factor out handling of missing spines in alignment calculations.
... by using spines.get.Note that for an Axes, get_window_extent (with or without the rendererargument) is always equal to ax.bbox; the refactoring also makes thatsymmetry clearer.
1 parent7157a19 commit7ca3d97

File tree

2 files changed

+22
-55
lines changed

2 files changed

+22
-55
lines changed

‎lib/matplotlib/axes/_base.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3006,12 +3006,8 @@ def _update_title_position(self, renderer):
30063006
if (ax.xaxis.get_ticks_position()in ['top','unknown']
30073007
orax.xaxis.get_label_position()=='top'):
30083008
bb=ax.xaxis.get_tightbbox(renderer)
3009-
ifbbisNone:
3010-
if'outline'inax.spines:
3011-
# Special case for colorbars:
3012-
bb=ax.spines['outline'].get_window_extent()
3013-
else:
3014-
bb=ax.get_window_extent(renderer)
3009+
ifbbisNone:# Extent of the outline for colorbars, of the axes otherwise.
3010+
bb=ax.spines.get("outline",ax).get_window_extent()
30153011
top=max(top,bb.ymax)
30163012
iftitle.get_text():
30173013
ax.yaxis.get_tightbbox(renderer)# update offsetText

‎lib/matplotlib/axis.py

Lines changed: 20 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -2400,34 +2400,19 @@ def _update_label_position(self, renderer):
24002400
# get bounding boxes for this axis and any siblings
24012401
# that have been set by `fig.align_xlabels()`
24022402
bboxes,bboxes2=self._get_tick_boxes_siblings(renderer=renderer)
2403-
2403+
ax=self.axes
24042404
x,y=self.label.get_position()
2405+
24052406
ifself.label_position=='bottom':
2406-
try:
2407-
spine=self.axes.spines['bottom']
2408-
spinebbox=spine.get_window_extent()
2409-
exceptKeyError:
2410-
# use Axes if spine doesn't exist
2411-
spinebbox=self.axes.bbox
2412-
bbox=mtransforms.Bbox.union(bboxes+ [spinebbox])
2413-
bottom=bbox.y0
2414-
2415-
self.label.set_position(
2416-
(x,bottom-self.labelpad*self.figure.dpi/72)
2417-
)
2407+
# Union with extents of the bottom spine if present, of the axes otherwise.
2408+
bbox=mtransforms.Bbox.union(
2409+
[*bboxes,ax.spines.get("bottom",ax).get_window_extent()])
2410+
self.label.set_position((x,bbox.y0-self.labelpad*self.figure.dpi/72))
24182411
else:
2419-
try:
2420-
spine=self.axes.spines['top']
2421-
spinebbox=spine.get_window_extent()
2422-
exceptKeyError:
2423-
# use Axes if spine doesn't exist
2424-
spinebbox=self.axes.bbox
2425-
bbox=mtransforms.Bbox.union(bboxes2+ [spinebbox])
2426-
top=bbox.y1
2427-
2428-
self.label.set_position(
2429-
(x,top+self.labelpad*self.figure.dpi/72)
2430-
)
2412+
# Union with extents of the top spine if present, of the axes otherwise.
2413+
bbox=mtransforms.Bbox.union(
2414+
[*bboxes2,ax.spines.get("top",ax).get_window_extent()])
2415+
self.label.set_position((x,bbox.y1+self.labelpad*self.figure.dpi/72))
24312416

24322417
def_update_offset_text_position(self,bboxes,bboxes2):
24332418
"""
@@ -2641,33 +2626,19 @@ def _update_label_position(self, renderer):
26412626
# get bounding boxes for this axis and any siblings
26422627
# that have been set by `fig.align_ylabels()`
26432628
bboxes,bboxes2=self._get_tick_boxes_siblings(renderer=renderer)
2629+
ax=self.axes
26442630
x,y=self.label.get_position()
2645-
ifself.label_position=='left':
2646-
try:
2647-
spine=self.axes.spines['left']
2648-
spinebbox=spine.get_window_extent()
2649-
exceptKeyError:
2650-
# use Axes if spine doesn't exist
2651-
spinebbox=self.axes.bbox
2652-
bbox=mtransforms.Bbox.union(bboxes+ [spinebbox])
2653-
left=bbox.x0
2654-
self.label.set_position(
2655-
(left-self.labelpad*self.figure.dpi/72,y)
2656-
)
26572631

2632+
ifself.label_position=='left':
2633+
# Union with extents of the left spine if present, of the axes otherwise.
2634+
bbox=mtransforms.Bbox.union(
2635+
[*bboxes,ax.spines.get("left",ax).get_window_extent()])
2636+
self.label.set_position((bbox.x0-self.labelpad*self.figure.dpi/72,y))
26582637
else:
2659-
try:
2660-
spine=self.axes.spines['right']
2661-
spinebbox=spine.get_window_extent()
2662-
exceptKeyError:
2663-
# use Axes if spine doesn't exist
2664-
spinebbox=self.axes.bbox
2665-
2666-
bbox=mtransforms.Bbox.union(bboxes2+ [spinebbox])
2667-
right=bbox.x1
2668-
self.label.set_position(
2669-
(right+self.labelpad*self.figure.dpi/72,y)
2670-
)
2638+
# Union with extents of the right spine if present, of the axes otherwise.
2639+
bbox=mtransforms.Bbox.union(
2640+
[*bboxes2,ax.spines.get("right",ax).get_window_extent()])
2641+
self.label.set_position((bbox.x1+self.labelpad*self.figure.dpi/72,y))
26712642

26722643
def_update_offset_text_position(self,bboxes,bboxes2):
26732644
"""

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp