@@ -1044,7 +1044,7 @@ def onselect(vmin, vmax):
10441044 """
10451045
10461046 def __init__ (self , ax , onselect , direction , minspan = None , useblit = False ,
1047- rectprops = None , onmove_callback = None ):
1047+ rectprops = None , onmove_callback = None , span_stays = False ):
10481048 """
10491049 Create a span selector in *ax*. When a selection is made, clear
10501050 the span and call *onselect* with::
@@ -1062,6 +1062,9 @@ def __init__(self, ax, onselect, direction, minspan=None, useblit=False,
10621062
10631063 Set the visible attribute to *False* if you want to turn off
10641064 the functionality of the span selector
1065+
1066+ If *span_stays* is True, the span stays visble after making
1067+ a valid selection.
10651068 """
10661069 AxesWidget .__init__ (self , ax )
10671070
@@ -1081,7 +1084,8 @@ def __init__(self, ax, onselect, direction, minspan=None, useblit=False,
10811084 self .onselect = onselect
10821085 self .onmove_callback = onmove_callback
10831086 self .minspan = minspan
1084-
1087+ self .span_stays = span_stays
1088+
10851089 # Needed when dragging out of axes
10861090 self .buttonDown = False
10871091 self .prev = (0 , 0 )
@@ -1116,7 +1120,13 @@ def new_axes(self, ax):
11161120 transform = trans ,
11171121 visible = False ,
11181122 ** self .rectprops )
1119-
1123+ if self .span_stays :
1124+ self .stay_rect = Rectangle ((0 , 0 ), w , h ,
1125+ transform = trans ,
1126+ visible = False ,
1127+ ** self .rectprops )
1128+ self .ax .add_patch (self .stay_rect )
1129+
11201130 if not self .useblit :
11211131 self .ax .add_patch (self .rect )
11221132
@@ -1140,6 +1150,9 @@ def press(self, event):
11401150 self .buttonDown = True
11411151
11421152 self .rect .set_visible (self .visible )
1153+ if self .span_stays :
1154+ self .stay_rect .set_visible (False )
1155+
11431156 if self .direction == 'horizontal' :
11441157 self .pressv = event .xdata
11451158 else :
@@ -1155,6 +1168,14 @@ def release(self, event):
11551168 self .buttonDown = False
11561169
11571170 self .rect .set_visible (False )
1171+
1172+ if self .span_stays :
1173+ self .stay_rect .set_x (self .rect .get_x ())
1174+ self .stay_rect .set_y (self .rect .get_y ())
1175+ self .stay_rect .set_width (self .rect .get_width ())
1176+ self .stay_rect .set_height (self .rect .get_height ())
1177+ self .stay_rect .set_visible (True )
1178+
11581179 self .canvas .draw ()
11591180 vmin = self .pressv
11601181 if self .direction == 'horizontal' :
0 commit comments