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