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