@@ -1120,51 +1120,25 @@ def __init__(self, targetfig, toolfig):
11201120
11211121 self .targetfig = targetfig
11221122 toolfig .subplots_adjust (left = 0.2 , right = 0.9 )
1123-
1124- self .axleft = toolfig .add_subplot (711 )
1125- self .axleft .set_title ('Click on slider to adjust subplot param' )
1126- self .axleft .set_navigate (False )
1127-
1128- self .sliderleft = Slider (self .axleft , 'left' ,
1129- 0 , 1 , targetfig .subplotpars .left ,
1130- closedmax = False )
1131- self .sliderleft .on_changed (self .funcleft )
1132-
1133- self .axbottom = toolfig .add_subplot (712 )
1134- self .axbottom .set_navigate (False )
1135- self .sliderbottom = Slider (self .axbottom ,
1136- 'bottom' , 0 , 1 ,
1137- targetfig .subplotpars .bottom ,
1138- closedmax = False )
1139- self .sliderbottom .on_changed (self .funcbottom )
1140-
1141- self .axright = toolfig .add_subplot (713 )
1142- self .axright .set_navigate (False )
1143- self .sliderright = Slider (self .axright , 'right' , 0 , 1 ,
1144- targetfig .subplotpars .right ,
1145- closedmin = False )
1146- self .sliderright .on_changed (self .funcright )
1147-
1148- self .axtop = toolfig .add_subplot (714 )
1149- self .axtop .set_navigate (False )
1150- self .slidertop = Slider (self .axtop , 'top' , 0 , 1 ,
1151- targetfig .subplotpars .top ,
1152- closedmin = False )
1153- self .slidertop .on_changed (self .functop )
1154-
1155- self .axwspace = toolfig .add_subplot (715 )
1156- self .axwspace .set_navigate (False )
1157- self .sliderwspace = Slider (self .axwspace , 'wspace' ,
1158- 0 , 1 , targetfig .subplotpars .wspace ,
1159- closedmax = False )
1160- self .sliderwspace .on_changed (self .funcwspace )
1161-
1162- self .axhspace = toolfig .add_subplot (716 )
1163- self .axhspace .set_navigate (False )
1164- self .sliderhspace = Slider (self .axhspace , 'hspace' ,
1165- 0 , 1 , targetfig .subplotpars .hspace ,
1166- closedmax = False )
1167- self .sliderhspace .on_changed (self .funchspace )
1123+ toolfig .suptitle ("Click on slider to adjust subplot param" )
1124+
1125+ self ._sliders = []
1126+ names = ["left" , "bottom" , "right" , "top" , "wspace" , "hspace" ]
1127+ # The last subplot, removed below, keeps space for the "Reset" button.
1128+ for name , ax in zip (names , toolfig .subplots (len (names ) + 1 )):
1129+ ax .set_navigate (False )
1130+ slider = Slider (ax , name ,
1131+ 0 , 1 , getattr (targetfig .subplotpars , name ))
1132+ slider .on_changed (self ._on_slider_changed )
1133+ self ._sliders .append (slider )
1134+ toolfig .axes [- 1 ].remove ()
1135+ (self .sliderleft , self .sliderbottom , self .sliderright , self .slidertop ,
1136+ self .sliderwspace , self .sliderhspace ) = self ._sliders
1137+ for slider in [self .sliderleft , self .sliderbottom ,
1138+ self .sliderwspace , self .sliderhspace ]:
1139+ slider .closedmax = False
1140+ for slider in [self .sliderright , self .slidertop ]:
1141+ slider .closedmin = False
11681142
11691143 # constraints
11701144 self .sliderleft .slidermax = self .sliderright
@@ -1175,57 +1149,78 @@ def __init__(self, targetfig, toolfig):
11751149 bax = toolfig .add_axes ([0.8 , 0.05 , 0.15 , 0.075 ])
11761150 self .buttonreset = Button (bax , 'Reset' )
11771151
1178- sliders = (self .sliderleft , self .sliderbottom , self .sliderright ,
1179- self .slidertop , self .sliderwspace , self .sliderhspace ,)
1180-
1181- def func (event ):
1182- with ExitStack () as stack :
1183- # Temporarily disable drawing on self and self's sliders.
1184- stack .enter_context (cbook ._setattr_cm (self , drawon = False ))
1185- for slider in sliders :
1186- stack .enter_context (
1187- cbook ._setattr_cm (slider , drawon = False ))
1188- # Reset the slider to the initial position.
1189- for slider in sliders :
1190- slider .reset ()
1191- # Draw the canvas.
1192- if self .drawon :
1193- toolfig .canvas .draw ()
1194- self .targetfig .canvas .draw ()
1195-
1196- # during reset there can be a temporary invalid state
1197- # depending on the order of the reset so we turn off
1198- # validation for the resetting
1152+ # During reset there can be a temporary invalid state depending on the
1153+ # order of the reset so we turn off validation for the resetting
11991154 validate = toolfig .subplotpars .validate
12001155 toolfig .subplotpars .validate = False
1201- self .buttonreset .on_clicked (func )
1156+ self .buttonreset .on_clicked (self . _on_reset )
12021157 toolfig .subplotpars .validate = validate
12031158
1159+ def _on_slider_changed (self , _ ):
1160+ self .targetfig .subplots_adjust (
1161+ ** {slider .label .get_text (): slider .val
1162+ for slider in self ._sliders })
1163+ if self .drawon :
1164+ self .targetfig .canvas .draw ()
1165+
1166+ def _on_reset (self , event ):
1167+ with ExitStack () as stack :
1168+ # Temporarily disable drawing on self and self's sliders.
1169+ stack .enter_context (cbook ._setattr_cm (self , drawon = False ))
1170+ for slider in self ._sliders :
1171+ stack .enter_context (cbook ._setattr_cm (slider , drawon = False ))
1172+ # Reset the slider to the initial position.
1173+ for slider in self ._sliders :
1174+ slider .reset ()
1175+ # Draw the canvas.
1176+ if self .drawon :
1177+ event .canvas .draw ()
1178+ self .targetfig .canvas .draw ()
1179+
1180+ axleft = cbook .deprecated ("3.3" , name = "axleft" )(
1181+ property (lambda self : self .sliderleft .ax ))
1182+ axright = cbook .deprecated ("3.3" , name = "axright" )(
1183+ property (lambda self : self .sliderright .ax ))
1184+ axbottom = cbook .deprecated ("3.3" , name = "axbottom" )(
1185+ property (lambda self : self .sliderbottom .ax ))
1186+ axtop = cbook .deprecated ("3.3" , name = "axtop" )(
1187+ property (lambda self : self .slidertop .ax ))
1188+ axwspace = cbook .deprecated ("3.3" , name = "axwspace" )(
1189+ property (lambda self : self .sliderwspace .ax ))
1190+ axhspace = cbook .deprecated ("3.3" , name = "axhspace" )(
1191+ property (lambda self : self .sliderhspace .ax ))
1192+
1193+ @cbook .deprecated ("3.3" )
12041194 def funcleft (self , val ):
12051195 self .targetfig .subplots_adjust (left = val )
12061196 if self .drawon :
12071197 self .targetfig .canvas .draw ()
12081198
1199+ @cbook .deprecated ("3.3" )
12091200 def funcright (self , val ):
12101201 self .targetfig .subplots_adjust (right = val )
12111202 if self .drawon :
12121203 self .targetfig .canvas .draw ()
12131204
1205+ @cbook .deprecated ("3.3" )
12141206 def funcbottom (self , val ):
12151207 self .targetfig .subplots_adjust (bottom = val )
12161208 if self .drawon :
12171209 self .targetfig .canvas .draw ()
12181210
1211+ @cbook .deprecated ("3.3" )
12191212 def functop (self , val ):
12201213 self .targetfig .subplots_adjust (top = val )
12211214 if self .drawon :
12221215 self .targetfig .canvas .draw ()
12231216
1217+ @cbook .deprecated ("3.3" )
12241218 def funcwspace (self , val ):
12251219 self .targetfig .subplots_adjust (wspace = val )
12261220 if self .drawon :
12271221 self .targetfig .canvas .draw ()
12281222
1223+ @cbook .deprecated ("3.3" )
12291224 def funchspace (self , val ):
12301225 self .targetfig .subplots_adjust (hspace = val )
12311226 if self .drawon :
0 commit comments