Hi I am trying to convert a list of dates as strings to an x axis in matplotlib and I can\'t seem to get it to come out right.
dates = [\'2014-05-06\', \'20
Is this the goal? (Threw in rotation because it almost always comes up, with dates.)
datelist = ['2014-05-06', '2014-05-07', '2014-05-08', '2014-05-09', '2014-05-10', '2014-05-11', '2014-05-12', '2014-05-13']
import matplotlib
from matplotlib import pyplot
from matplotlib import dates
import datetime
converted_dates = list(map(datetime.datetime.strptime, datelist, len(datelist)*['%Y-%m-%d']))
x_axis = converted_dates
formatter = dates.DateFormatter('%Y-%m-%d')
y_axis = range(0,8)
pyplot.plot( x_axis, y_axis, '-' )
ax = pyplot.gcf().axes[0]
ax.xaxis.set_major_formatter(formatter)
pyplot.gcf().autofmt_xdate(rotation=25)
pyplot.show()
The idea of using matplotlib.dates.datestr2num
is in principle correct. You would then need to tell matplotlib to actually interprete the resulting numbers as dates. One easy option is to use plot_date
instead of plot
.
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.dates
dates = ['2014-05-06', '2014-05-07', '2014-05-08', '2014-05-09',
'2014-05-10', '2014-05-11', '2014-05-12', '2014-05-13']
converted_dates = matplotlib.dates.datestr2num(dates)
x_axis = (converted_dates)
y_axis = range(0,8)
plt.plot_date( x_axis, y_axis, '-' )
plt.show()
Try using strptime
. Documentation is here:
https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior
For example:
import datetime
sDate = '2014-05-06'
dtDate = datetime.datetime.strptime(sDate,"%m-%d-%Y")
matplotlib can compare datetime objects.