@@ -1832,8 +1832,11 @@ class DateConverter(units.ConversionInterface):
1832
1832
The 'unit' tag for such data is None or a tzinfo instance.
1833
1833
"""
1834
1834
1835
- @staticmethod
1836
- def axisinfo (unit , axis ):
1835
+ def __init__ (self , interval_multiples = True ):
1836
+ self ._interval_multiples = interval_multiples
1837
+ super ().__init__ ()
1838
+
1839
+ def axisinfo (self , unit , axis ):
1837
1840
"""
1838
1841
Return the `~matplotlib.units.AxisInfo` for *unit*.
1839
1842
@@ -1842,7 +1845,8 @@ def axisinfo(unit, axis):
1842
1845
"""
1843
1846
tz = unit
1844
1847
1845
- majloc = AutoDateLocator (tz = tz )
1848
+ majloc = AutoDateLocator (tz = tz ,
1849
+ interval_multiples = self ._interval_multiples )
1846
1850
majfmt = AutoDateFormatter (majloc , tz = tz )
1847
1851
datemin = datetime .date (2000 , 1 , 1 )
1848
1852
datemax = datetime .date (2010 , 1 , 1 )
@@ -1884,17 +1888,19 @@ class ConciseDateConverter(DateConverter):
1884
1888
# docstring inherited
1885
1889
1886
1890
def __init__ (self , formats = None , zero_formats = None , offset_formats = None ,
1887
- show_offset = True ):
1891
+ show_offset = True , interval_multiples = True ):
1888
1892
self ._formats = formats
1889
1893
self ._zero_formats = zero_formats
1890
1894
self ._offset_formats = offset_formats
1891
1895
self ._show_offset = show_offset
1896
+ self ._interval_multiples = interval_multiples
1892
1897
super ().__init__ ()
1893
1898
1894
1899
def axisinfo (self , unit , axis ):
1895
1900
# docstring inherited
1896
1901
tz = unit
1897
- majloc = AutoDateLocator (tz = tz )
1902
+ majloc = AutoDateLocator (tz = tz ,
1903
+ interval_multiples = self ._interval_multiples )
1898
1904
majfmt = ConciseDateFormatter (majloc , tz = tz , formats = self ._formats ,
1899
1905
zero_formats = self ._zero_formats ,
1900
1906
offset_formats = self ._offset_formats ,
@@ -1905,6 +1911,49 @@ def axisinfo(self, unit, axis):
1905
1911
default_limits = (datemin , datemax ))
1906
1912
1907
1913
1908
- units .registry [np .datetime64 ] = DateConverter ()
1909
- units .registry [datetime .date ] = DateConverter ()
1910
- units .registry [datetime .datetime ] = DateConverter ()
1914
+ # The following is so that we can set the converter for dates
1915
+ # via the validator for the rcParams `date.converter` and
1916
+ # `date.interval_multiples`
1917
+
1918
+
1919
+ global _converter
1920
+ _conv_st = 'auto'
1921
+ global _int_mult
1922
+ _int_mult = True
1923
+
1924
+
1925
+ def _set_converter (s ):
1926
+ """Called by validator for rcParams date.converter"""
1927
+ global _conv_st
1928
+ _conv_st = s
1929
+ _register_converters ()
1930
+
1931
+
1932
+ def _set_int_mult (b ):
1933
+ """Called by validator for rcParams date.interval_multiples"""
1934
+ global _int_mult
1935
+ _int_mult = b
1936
+ _register_converters ()
1937
+
1938
+
1939
+ def _register_converters ():
1940
+ """
1941
+ Helper to register the date converters when rcParams `date.converter` and
1942
+ `date.interval_multiples` are changed. Called by the helpers above.
1943
+ """
1944
+ global _conv_st
1945
+ global _int_mult
1946
+ if _conv_st == 'concise' :
1947
+ converter = ConciseDateConverter
1948
+ else :
1949
+ converter = DateConverter
1950
+
1951
+ interval_multiples = _int_mult
1952
+ units .registry [np .datetime64 ] = converter (
1953
+ interval_multiples = interval_multiples )
1954
+ units .registry [datetime .date ] = converter (
1955
+ interval_multiples = interval_multiples )
1956
+ units .registry [datetime .datetime ] = converter (
1957
+ interval_multiples = interval_multiples )
1958
+
1959
+ # _register_converters()
0 commit comments