@@ -1120,51 +1120,25 @@ def __init__(self, targetfig, toolfig):
1120
1120
1121
1121
self .targetfig = targetfig
1122
1122
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
1168
1142
1169
1143
# constraints
1170
1144
self .sliderleft .slidermax = self .sliderright
@@ -1175,57 +1149,78 @@ def __init__(self, targetfig, toolfig):
1175
1149
bax = toolfig .add_axes ([0.8 , 0.05 , 0.15 , 0.075 ])
1176
1150
self .buttonreset = Button (bax , 'Reset' )
1177
1151
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
1199
1154
validate = toolfig .subplotpars .validate
1200
1155
toolfig .subplotpars .validate = False
1201
- self .buttonreset .on_clicked (func )
1156
+ self .buttonreset .on_clicked (self . _on_reset )
1202
1157
toolfig .subplotpars .validate = validate
1203
1158
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" )
1204
1194
def funcleft (self , val ):
1205
1195
self .targetfig .subplots_adjust (left = val )
1206
1196
if self .drawon :
1207
1197
self .targetfig .canvas .draw ()
1208
1198
1199
+ @cbook .deprecated ("3.3" )
1209
1200
def funcright (self , val ):
1210
1201
self .targetfig .subplots_adjust (right = val )
1211
1202
if self .drawon :
1212
1203
self .targetfig .canvas .draw ()
1213
1204
1205
+ @cbook .deprecated ("3.3" )
1214
1206
def funcbottom (self , val ):
1215
1207
self .targetfig .subplots_adjust (bottom = val )
1216
1208
if self .drawon :
1217
1209
self .targetfig .canvas .draw ()
1218
1210
1211
+ @cbook .deprecated ("3.3" )
1219
1212
def functop (self , val ):
1220
1213
self .targetfig .subplots_adjust (top = val )
1221
1214
if self .drawon :
1222
1215
self .targetfig .canvas .draw ()
1223
1216
1217
+ @cbook .deprecated ("3.3" )
1224
1218
def funcwspace (self , val ):
1225
1219
self .targetfig .subplots_adjust (wspace = val )
1226
1220
if self .drawon :
1227
1221
self .targetfig .canvas .draw ()
1228
1222
1223
+ @cbook .deprecated ("3.3" )
1229
1224
def funchspace (self , val ):
1230
1225
self .targetfig .subplots_adjust (hspace = val )
1231
1226
if self .drawon :
0 commit comments