@@ -115,7 +115,7 @@ def __call__(self, ax, renderer):
115
115
# time as transSubfigure may otherwise change after this is evaluated.
116
116
return mtransforms .TransformedBbox (
117
117
mtransforms .Bbox .from_bounds (* self ._bounds ),
118
- self ._transform - ax .figure .transSubfigure )
118
+ self ._transform - ax .get_figure ( root = False ) .transSubfigure )
119
119
120
120
121
121
def _process_plot_format (fmt , * , ambiguous_fmt_datakey = False ):
@@ -788,7 +788,7 @@ def get_subplotspec(self):
788
788
def set_subplotspec (self , subplotspec ):
789
789
"""Set the `.SubplotSpec`. associated with the subplot."""
790
790
self ._subplotspec = subplotspec
791
- self ._set_position (subplotspec .get_position (self .figure ))
791
+ self ._set_position (subplotspec .get_position (self .get_figure ( root = False ) ))
792
792
793
793
def get_gridspec (self ):
794
794
"""Return the `.GridSpec` associated with the subplot, or None."""
@@ -959,8 +959,9 @@ def get_xaxis_text1_transform(self, pad_points):
959
959
"""
960
960
labels_align = mpl .rcParams ["xtick.alignment" ]
961
961
return (self .get_xaxis_transform (which = 'tick1' ) +
962
- mtransforms .ScaledTranslation (0 , - 1 * pad_points / 72 ,
963
- self .figure .dpi_scale_trans ),
962
+ mtransforms .ScaledTranslation (
963
+ 0 , - 1 * pad_points / 72 ,
964
+ self .get_figure (root = False ).dpi_scale_trans ),
964
965
"top" , labels_align )
965
966
966
967
def get_xaxis_text2_transform (self , pad_points ):
@@ -985,8 +986,9 @@ def get_xaxis_text2_transform(self, pad_points):
985
986
"""
986
987
labels_align = mpl .rcParams ["xtick.alignment" ]
987
988
return (self .get_xaxis_transform (which = 'tick2' ) +
988
- mtransforms .ScaledTranslation (0 , pad_points / 72 ,
989
- self .figure .dpi_scale_trans ),
989
+ mtransforms .ScaledTranslation (
990
+ 0 , pad_points / 72 ,
991
+ self .get_figure (root = False ).dpi_scale_trans ),
990
992
"bottom" , labels_align )
991
993
992
994
def get_yaxis_transform (self , which = 'grid' ):
@@ -1039,8 +1041,9 @@ def get_yaxis_text1_transform(self, pad_points):
1039
1041
"""
1040
1042
labels_align = mpl .rcParams ["ytick.alignment" ]
1041
1043
return (self .get_yaxis_transform (which = 'tick1' ) +
1042
- mtransforms .ScaledTranslation (- 1 * pad_points / 72 , 0 ,
1043
- self .figure .dpi_scale_trans ),
1044
+ mtransforms .ScaledTranslation (
1045
+ - 1 * pad_points / 72 , 0 ,
1046
+ self .get_figure (root = False ).dpi_scale_trans ),
1044
1047
labels_align , "right" )
1045
1048
1046
1049
def get_yaxis_text2_transform (self , pad_points ):
@@ -1065,8 +1068,9 @@ def get_yaxis_text2_transform(self, pad_points):
1065
1068
"""
1066
1069
labels_align = mpl .rcParams ["ytick.alignment" ]
1067
1070
return (self .get_yaxis_transform (which = 'tick2' ) +
1068
- mtransforms .ScaledTranslation (pad_points / 72 , 0 ,
1069
- self .figure .dpi_scale_trans ),
1071
+ mtransforms .ScaledTranslation (
1072
+ pad_points / 72 , 0 ,
1073
+ self .get_figure (root = False ).dpi_scale_trans ),
1070
1074
labels_align , "left" )
1071
1075
1072
1076
def _update_transScale (self ):
@@ -1173,7 +1177,7 @@ def get_axes_locator(self):
1173
1177
1174
1178
def _set_artist_props (self , a ):
1175
1179
"""Set the boilerplate props for artists added to Axes."""
1176
- a .set_figure (self .figure )
1180
+ a .set_figure (self .get_figure ( root = False ) )
1177
1181
if not a .is_transform_set ():
1178
1182
a .set_transform (self .transData )
1179
1183
@@ -1347,7 +1351,7 @@ def __clear(self):
1347
1351
# the other artists. We use the frame to draw the edges so we are
1348
1352
# setting the edgecolor to None.
1349
1353
self .patch = self ._gen_axes_patch ()
1350
- self .patch .set_figure (self .figure )
1354
+ self .patch .set_figure (self .get_figure ( root = False ) )
1351
1355
self .patch .set_facecolor (self ._facecolor )
1352
1356
self .patch .set_edgecolor ('none' )
1353
1357
self .patch .set_linewidth (0 )
@@ -1522,7 +1526,7 @@ def _set_title_offset_trans(self, title_offset_points):
1522
1526
"""
1523
1527
self .titleOffsetTrans = mtransforms .ScaledTranslation (
1524
1528
0.0 , title_offset_points / 72 ,
1525
- self .figure .dpi_scale_trans )
1529
+ self .get_figure ( root = False ) .dpi_scale_trans )
1526
1530
for _title in (self .title , self ._left_title , self ._right_title ):
1527
1531
_title .set_transform (self .transAxes + self .titleOffsetTrans )
1528
1532
_title .set_clip_box (None )
@@ -1937,7 +1941,7 @@ def apply_aspect(self, position=None):
1937
1941
self ._set_position (position , which = 'active' )
1938
1942
return
1939
1943
1940
- trans = self .get_figure ().transSubfigure
1944
+ trans = self .get_figure (root = False ).transSubfigure
1941
1945
bb = mtransforms .Bbox .unit ().transformed (trans )
1942
1946
# this is the physical aspect of the panel (or figure):
1943
1947
fig_aspect = bb .height / bb .width
@@ -2274,7 +2278,7 @@ def add_child_axes(self, ax):
2274
2278
2275
2279
self .child_axes .append (ax )
2276
2280
ax ._remove_method = functools .partial (
2277
- self .figure ._remove_axes , owners = [self .child_axes ])
2281
+ self .get_figure ( root = False ) ._remove_axes , owners = [self .child_axes ])
2278
2282
self .stale = True
2279
2283
return ax
2280
2284
@@ -3022,7 +3026,8 @@ def _update_title_position(self, renderer):
3022
3026
axs = set ()
3023
3027
axs .update (self .child_axes )
3024
3028
axs .update (self ._twinned_axes .get_siblings (self ))
3025
- axs .update (self .figure ._align_label_groups ['title' ].get_siblings (self ))
3029
+ axs .update (
3030
+ self .get_figure (root = False )._align_label_groups ['title' ].get_siblings (self ))
3026
3031
3027
3032
for ax in self .child_axes : # Child positions must be updated first.
3028
3033
locator = ax .get_axes_locator ()
@@ -3108,7 +3113,7 @@ def draw(self, renderer):
3108
3113
for _axis in self ._axis_map .values ():
3109
3114
artists .remove (_axis )
3110
3115
3111
- if not self .figure .canvas .is_saving ():
3116
+ if not self .get_figure ( root = False ) .canvas .is_saving ():
3112
3117
artists = [
3113
3118
a for a in artists
3114
3119
if not a .get_animated () or isinstance (a , mimage .AxesImage )]
@@ -3136,10 +3141,10 @@ def draw(self, renderer):
3136
3141
artists = [self .patch ] + artists
3137
3142
3138
3143
if artists_rasterized :
3139
- _draw_rasterized (self .figure , artists_rasterized , renderer )
3144
+ _draw_rasterized (self .get_figure ( root = True ) , artists_rasterized , renderer )
3140
3145
3141
3146
mimage ._draw_list_compositing_images (
3142
- renderer , self , artists , self .figure .suppressComposite )
3147
+ renderer , self , artists , self .get_figure ( root = True ) .suppressComposite )
3143
3148
3144
3149
renderer .close_group ('axes' )
3145
3150
self .stale = False
@@ -3148,7 +3153,7 @@ def draw_artist(self, a):
3148
3153
"""
3149
3154
Efficiently redraw a single artist.
3150
3155
"""
3151
- a .draw (self .figure .canvas .get_renderer ())
3156
+ a .draw (self .get_figure ( root = False ) .canvas .get_renderer ())
3152
3157
3153
3158
def redraw_in_frame (self ):
3154
3159
"""
@@ -3158,7 +3163,7 @@ def redraw_in_frame(self):
3158
3163
for artist in [* self ._axis_map .values (),
3159
3164
self .title , self ._left_title , self ._right_title ]:
3160
3165
stack .enter_context (artist ._cm_set (visible = False ))
3161
- self .draw (self .figure .canvas .get_renderer ())
3166
+ self .draw (self .get_figure ( root = False ) .canvas .get_renderer ())
3162
3167
3163
3168
# Axes rectangle characteristics
3164
3169
@@ -4466,7 +4471,7 @@ def get_tightbbox(self, renderer=None, call_axes_locator=True,
4466
4471
4467
4472
bb = []
4468
4473
if renderer is None :
4469
- renderer = self .figure ._get_renderer ()
4474
+ renderer = self .get_figure ( root = False ) ._get_renderer ()
4470
4475
4471
4476
if not self .get_visible ():
4472
4477
return None
@@ -4517,9 +4522,9 @@ def _make_twin_axes(self, *args, **kwargs):
4517
4522
raise ValueError ("Twinned Axes may share only one axis" )
4518
4523
ss = self .get_subplotspec ()
4519
4524
if ss :
4520
- twin = self .figure .add_subplot (ss , * args , ** kwargs )
4525
+ twin = self .get_figure ( root = False ) .add_subplot (ss , * args , ** kwargs )
4521
4526
else :
4522
- twin = self .figure .add_axes (
4527
+ twin = self .get_figure ( root = False ) .add_axes (
4523
4528
self .get_position (True ), * args , ** kwargs ,
4524
4529
axes_locator = _TransformedBoundsLocator (
4525
4530
[0 , 0 , 1 , 1 ], self .transAxes ))
@@ -4748,6 +4753,9 @@ def __init__(self, figure, artists):
4748
4753
self .figure = figure
4749
4754
self .artists = artists
4750
4755
4756
+ def get_figure (self , root = False ):
4757
+ return self .figure
4758
+
4751
4759
@martist .allow_rasterization
4752
4760
def draw (self , renderer ):
4753
4761
for a in self .artists :
0 commit comments