Matplotlib.dates.AutoDateFormatter class in Python - GeeksforGeeks

11 Sep, 2021
Matplotlib is an amazing visualization library in Python for 2D plots of arrays. Matplotlib is a multi-platform data visualization library built on NumPy arrays and designed to work with the broader SciPy stack. 
The matplotlib.dates.AutoDateFormatter class is used to figure out the best format to use for the date. This is best used with AutoDateLocator. It has a dictionary that maps scale of the tick and a format string. By default it looks as below:
self.scaled = { DAYS_PER_YEAR: rcParams[‘date.autoformat.year’], DAYS_PER_MONTH: rcParams[‘date.autoformat.month’], 1.0: rcParams[‘date.autoformat.day’], 1. / HOURS_PER_DAY: rcParams[‘date.autoformat.hour’], 1. / (MINUTES_PER_DAY): rcParams[‘date.autoformat.minute’], 1. / (SEC_PER_DAY): rcParams[‘date.autoformat.second’], 1. / (MUSECONDS_PER_DAY): rcParams[‘date.autoformat.microsecond’], } 
The key in that dictionary that is greater then or equal to the current scale is picked by this algorithm and is used to format strings. This dictionary can also be customized like below: 
locator = AutoDateLocator()
formatter = AutoDateFormatter(locator)

# only show hour and minute
formatter.scaled[1/(24.*60.)] = '%H:%M'
The default format is used if no value in self.scaled is greater than the unit returned by locator._get_unit().
Syntax: class matplotlib.dates.AutoDateFormatter(locator, tz=None, defaultfmt=’%Y-%m-%d’)
Parameters: 
locator: It determines the tick locations when plotting dates.tz: It holds the time-zone informationdefaultfmt: If no format matches=ches the requirement this format is used as a default in years-months-days format. 
locator: It determines the tick locations when plotting dates.
tz: It holds the time-zone information
defaultfmt: If no format matches=ches the requirement this format is used as a default in years-months-days format. 
Example 1:  
Python3
import datetimeimport matplotlib.pyplot as pltfrom matplotlib.dates import AutoDateLocator, AutoDateFormatter, date2num # make my own data:date = '2020-02-23'low = 10 # how to format dates:date_datetime = datetime.datetime.strptime(date, '% Y-% m-% d')int_date = date2num( date_datetime) # create plots:figure, axes = plt.subplots() # plot data:axes.bar(int_date, low, label ="", color ="green") # format datelocator = AutoDateLocator()axes.xaxis.set_major_locator(locator)axes.xaxis.set_major_formatter( AutoDateFormatter(locator) ) # apply autoformatter for displaying of datesmin_date = date2num( datetime.datetime.strptime('2020-02-16', '% Y-% m-% d') )max_date = date2num( datetime.datetime.strptime('2020-02-28', '% Y-% m-% d') )axes.set_xlim([min_date, max_date])figure.autofmt_xdate() # show plot:plt.show()
Output: 
Example 2: 
Python3
import randomimport matplotlib.pyplot as pltimport matplotlib.dates as mdates # generate some random data for# approx 5 yrsrandom_data = [float(random.randint(1487517521,                                    14213254713))               for _ in range(1000)] # convert the epoch format to# matplotlib date formatmpl_data = mdates.epoch2num(random_data) # plotting the graphfig, axes = plt.subplots(1, 1)axes.hist(mpl_data, bins = 51, color ='green') locator = mdates.AutoDateLocator() axes.xaxis.set_major_locator(locator)axes.xaxis.set_major_formatter(mdates.AutoDateFormatter(locator)) plt.show()
Output: 
 
adnanirshad158
Python-matplotlib
Python
Write From Home
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Python Dictionary
Read a file line by line in Python
Enumerate() in Python
How to Install PIP on Windows ?
Iterate over a list in Python
Convert integer to string in Python
Convert string to integer in Python
How to set input type date in dd-mm-yyyy format using HTML ?
Python infinity
Matplotlib.pyplot.title() in Python