@@ -1890,6 +1890,36 @@ def get_minpos(self):
18901890 raise NotImplementedError ()
18911891
18921892
1893+ def _make_getset_interval (method_name , lim_name , attr_name ):
1894+ """
1895+ Helper to generate ``get_{data,view}_interval`` and
1896+ ``set_{data,view}_interval`` implementations.
1897+ """
1898+
1899+ def getter (self ):
1900+ # docstring inherited.
1901+ return getattr (getattr (self .axes , lim_name ), attr_name )
1902+
1903+ def setter (self , vmin , vmax , ignore = False ):
1904+ # docstring inherited.
1905+ if ignore :
1906+ setattr (getattr (self .axes , lim_name ), attr_name , (vmin , vmax ))
1907+ else :
1908+ oldmin , oldmax = getter (self )
1909+ if oldmin < oldmax :
1910+ setter (self , min (vmin , vmax , oldmin ), max (vmin , vmax , oldmax ),
1911+ ignore = True )
1912+ else :
1913+ setter (self , max (vmin , vmax , oldmax ), min (vmin , vmax , oldmin ),
1914+ ignore = True )
1915+ self .stale = True
1916+
1917+ getter .__name__ = f"get_{ method_name } _interval"
1918+ setter .__name__ = f"set_{ method_name } _interval"
1919+
1920+ return getter , setter
1921+
1922+
18931923class XAxis (Axis ):
18941924 __name__ = 'xaxis'
18951925 axis_name = 'x'
@@ -2133,39 +2163,14 @@ def get_ticks_position(self):
21332163 "default" : "default" , "unknown" : "unknown" }[
21342164 self ._get_ticks_position ()]
21352165
2136- def get_view_interval (self ):
2137- # docstring inherited
2138- return self .axes .viewLim .intervalx
2139-
2140- def set_view_interval (self , vmin , vmax , ignore = False ):
2141- # docstring inherited
2142- if ignore :
2143- self .axes .viewLim .intervalx = vmin , vmax
2144- else :
2145- Vmin , Vmax = self .get_view_interval ()
2146- if Vmin < Vmax :
2147- self .axes .viewLim .intervalx = (min (vmin , vmax , Vmin ),
2148- max (vmin , vmax , Vmax ))
2149- else :
2150- self .axes .viewLim .intervalx = (max (vmin , vmax , Vmin ),
2151- min (vmin , vmax , Vmax ))
2166+ get_view_interval , set_view_interval = _make_getset_interval (
2167+ "view" , "viewLim" , "intervalx" )
2168+ get_data_interval , set_data_interval = _make_getset_interval (
2169+ "data" , "dataLim" , "intervalx" )
21522170
21532171 def get_minpos (self ):
21542172 return self .axes .dataLim .minposx
21552173
2156- def get_data_interval (self ):
2157- # docstring inherited
2158- return self .axes .dataLim .intervalx
2159-
2160- def set_data_interval (self , vmin , vmax , ignore = False ):
2161- # docstring inherited
2162- if ignore :
2163- self .axes .dataLim .intervalx = vmin , vmax
2164- else :
2165- Vmin , Vmax = self .get_data_interval ()
2166- self .axes .dataLim .intervalx = min (vmin , Vmin ), max (vmax , Vmax )
2167- self .stale = True
2168-
21692174 def set_default_intervals (self ):
21702175 # docstring inherited
21712176 xmin , xmax = 0. , 1.
@@ -2460,40 +2465,14 @@ def get_ticks_position(self):
24602465 "default" : "default" , "unknown" : "unknown" }[
24612466 self ._get_ticks_position ()]
24622467
2463- def get_view_interval (self ):
2464- # docstring inherited
2465- return self .axes .viewLim .intervaly
2466-
2467- def set_view_interval (self , vmin , vmax , ignore = False ):
2468- # docstring inherited
2469- if ignore :
2470- self .axes .viewLim .intervaly = vmin , vmax
2471- else :
2472- Vmin , Vmax = self .get_view_interval ()
2473- if Vmin < Vmax :
2474- self .axes .viewLim .intervaly = (min (vmin , vmax , Vmin ),
2475- max (vmin , vmax , Vmax ))
2476- else :
2477- self .axes .viewLim .intervaly = (max (vmin , vmax , Vmin ),
2478- min (vmin , vmax , Vmax ))
2479- self .stale = True
2468+ get_view_interval , set_view_interval = _make_getset_interval (
2469+ "view" , "viewLim" , "intervaly" )
2470+ get_data_interval , set_data_interval = _make_getset_interval (
2471+ "data" , "dataLim" , "intervaly" )
24802472
24812473 def get_minpos (self ):
24822474 return self .axes .dataLim .minposy
24832475
2484- def get_data_interval (self ):
2485- # docstring inherited
2486- return self .axes .dataLim .intervaly
2487-
2488- def set_data_interval (self , vmin , vmax , ignore = False ):
2489- # docstring inherited
2490- if ignore :
2491- self .axes .dataLim .intervaly = vmin , vmax
2492- else :
2493- Vmin , Vmax = self .get_data_interval ()
2494- self .axes .dataLim .intervaly = min (vmin , Vmin ), max (vmax , Vmax )
2495- self .stale = True
2496-
24972476 def set_default_intervals (self ):
24982477 # docstring inherited
24992478 ymin , ymax = 0. , 1.
0 commit comments