Format of datetime in pyplot axis

Solution 1:

You can use DateFormatter:

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(your_dates, your_data)

# format your data to desired format. Here I chose YYYY-MM-DD but you can set it to whatever you want.
import matplotlib.dates as mdates
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))

# rotate and align the tick labels so they look better
fig.autofmt_xdate()

Solution 2:

Apart from manually specifying the datetime format for the axes as shown in the other answer, you may use rcParams to set the format.

The standard is

# date.autoformatter.year     : %Y
# date.autoformatter.month    : %Y-%m
# date.autoformatter.day      : %Y-%m-%d
# date.autoformatter.hour     : %m-%d %H
# date.autoformatter.minute   : %d %H:%M
# date.autoformatter.second   : %H:%M:%S
# date.autoformatter.microsecond   : %M:%S.%f

You may change that in the matplotlib rc file,
or inside the code via

plt.rcParams["date.autoformatter.minute"] = "%Y-%m-%d %H:%M:%S"