I can\'t figure out how to change the format of these x-labels. Ideally, I\'d like to call strftime(\'%Y-%m-%d\')
on them. I\'ve tried things like set_ma
The objects in the date_range
DF are Timestamp
objects. Call Timestamp.strftime
on each object:
date_range = pd.date_range('2014-01-01', '2015-01-01', freq='MS')
date_range = date_range.map(lambda t: t.strftime('%Y-%m-%d'))
print date_range
array([2014-01-01, 2014-02-01, 2014-03-01, 2014-04-01, 2014-05-01,
2014-06-01, 2014-07-01, 2014-08-01, 2014-09-01, 2014-10-01,
2014-11-01, 2014-12-01, 2015-01-01], dtype=object)
This allows for more general formatting options versus truncating the ticklabel string.
Simply access the tick labels and change them:
xtl=[item.get_text()[:10] for item in ax.get_xticklabels()]
_=ax.set_xticklabels(xtl)
You could just pass new labels exactly with your preferred strftime:
ax.set_xticklabels([pandas_datetime.strftime("%Y-%m-%d") for pandas_datetime in df.index])
It's not the prettiest answer, but it gets the job done consistently.