@@ -1875,6 +1875,36 @@ def get_minpos(self):
18751875 raise NotImplementedError ()
18761876
18771877
1878+ def _make_getset_interval (method_name , lim_name , attr_name ):
1879+ """
1880+ Helper to generate ``get_{data,view}_interval`` and
1881+ ``set_{data,view}_interval`` implementations.
1882+ """
1883+
1884+ def getter (self ):
1885+ # docstring inherited.
1886+ return getattr (getattr (self .axes , lim_name ), attr_name )
1887+
1888+ def setter (self , vmin , vmax , ignore = False ):
1889+ # docstring inherited.
1890+ if ignore :
1891+ setattr (getattr (self .axes , lim_name ), attr_name , (vmin , vmax ))
1892+ else :
1893+ oldmin , oldmax = getter (self )
1894+ if oldmin < oldmax :
1895+ setter (self , min (vmin , vmax , oldmin ), max (vmin , vmax , oldmax ),
1896+ ignore = True )
1897+ else :
1898+ setter (self , max (vmin , vmax , oldmax ), min (vmin , vmax , oldmin ),
1899+ ignore = True )
1900+ self .stale = True
1901+
1902+ getter .__name__ = f"get_{ method_name } _interval"
1903+ setter .__name__ = f"set_{ method_name } _interval"
1904+
1905+ return getter , setter
1906+
1907+
18781908class XAxis (Axis ):
18791909 __name__ = 'xaxis'
18801910 axis_name = 'x'
@@ -2118,39 +2148,14 @@ def get_ticks_position(self):
21182148 "default" : "default" , "unknown" : "unknown" }[
21192149 self ._get_ticks_position ()]
21202150
2121- def get_view_interval (self ):
2122- # docstring inherited
2123- return self .axes .viewLim .intervalx
2124-
2125- def set_view_interval (self , vmin , vmax , ignore = False ):
2126- # docstring inherited
2127- if ignore :
2128- self .axes .viewLim .intervalx = vmin , vmax
2129- else :
2130- Vmin , Vmax = self .get_view_interval ()
2131- if Vmin < Vmax :
2132- self .axes .viewLim .intervalx = (min (vmin , vmax , Vmin ),
2133- max (vmin , vmax , Vmax ))
2134- else :
2135- self .axes .viewLim .intervalx = (max (vmin , vmax , Vmin ),
2136- min (vmin , vmax , Vmax ))
2151+ get_view_interval , set_view_interval = _make_getset_interval (
2152+ "view" , "viewLim" , "intervalx" )
2153+ get_data_interval , set_data_interval = _make_getset_interval (
2154+ "data" , "dataLim" , "intervalx" )
21372155
21382156 def get_minpos (self ):
21392157 return self .axes .dataLim .minposx
21402158
2141- def get_data_interval (self ):
2142- # docstring inherited
2143- return self .axes .dataLim .intervalx
2144-
2145- def set_data_interval (self , vmin , vmax , ignore = False ):
2146- # docstring inherited
2147- if ignore :
2148- self .axes .dataLim .intervalx = vmin , vmax
2149- else :
2150- Vmin , Vmax = self .get_data_interval ()
2151- self .axes .dataLim .intervalx = min (vmin , Vmin ), max (vmax , Vmax )
2152- self .stale = True
2153-
21542159 def set_default_intervals (self ):
21552160 # docstring inherited
21562161 xmin , xmax = 0. , 1.
@@ -2445,40 +2450,14 @@ def get_ticks_position(self):
24452450 "default" : "default" , "unknown" : "unknown" }[
24462451 self ._get_ticks_position ()]
24472452
2448- def get_view_interval (self ):
2449- # docstring inherited
2450- return self .axes .viewLim .intervaly
2451-
2452- def set_view_interval (self , vmin , vmax , ignore = False ):
2453- # docstring inherited
2454- if ignore :
2455- self .axes .viewLim .intervaly = vmin , vmax
2456- else :
2457- Vmin , Vmax = self .get_view_interval ()
2458- if Vmin < Vmax :
2459- self .axes .viewLim .intervaly = (min (vmin , vmax , Vmin ),
2460- max (vmin , vmax , Vmax ))
2461- else :
2462- self .axes .viewLim .intervaly = (max (vmin , vmax , Vmin ),
2463- min (vmin , vmax , Vmax ))
2464- self .stale = True
2453+ get_view_interval , set_view_interval = _make_getset_interval (
2454+ "view" , "viewLim" , "intervaly" )
2455+ get_data_interval , set_data_interval = _make_getset_interval (
2456+ "data" , "dataLim" , "intervaly" )
24652457
24662458 def get_minpos (self ):
24672459 return self .axes .dataLim .minposy
24682460
2469- def get_data_interval (self ):
2470- # docstring inherited
2471- return self .axes .dataLim .intervaly
2472-
2473- def set_data_interval (self , vmin , vmax , ignore = False ):
2474- # docstring inherited
2475- if ignore :
2476- self .axes .dataLim .intervaly = vmin , vmax
2477- else :
2478- Vmin , Vmax = self .get_data_interval ()
2479- self .axes .dataLim .intervaly = min (vmin , Vmin ), max (vmax , Vmax )
2480- self .stale = True
2481-
24822461 def set_default_intervals (self ):
24832462 # docstring inherited
24842463 ymin , ymax = 0. , 1.
0 commit comments