diff --git a/examples/text_labels_and_annotations/date.py b/examples/text_labels_and_annotations/date.py index 90e9f94a511e..72beeace35fa 100644 --- a/examples/text_labels_and_annotations/date.py +++ b/examples/text_labels_and_annotations/date.py @@ -3,9 +3,9 @@ Date tick labels ================ -Show how to make date plots in matplotlib using date tick locators and -formatters. See major_minor_demo1.py for more information on -controlling major and minor ticks +Show how to make date plots in Matplotlib using date tick locators and +formatters. See :doc:`/gallery/ticks_and_spines/major_minor_demo` for more +information on controlling major and minor ticks. All matplotlib date plotting is done by converting date instances into days since 0001-01-01 00:00:00 UTC plus one day (for historical reasons). The @@ -23,33 +23,31 @@ years = mdates.YearLocator() # every year months = mdates.MonthLocator() # every month -yearsFmt = mdates.DateFormatter('%Y') +years_fmt = mdates.DateFormatter('%Y') -# Load a numpy record array from yahoo csv data with fields date, open, close, -# volume, adj_close from the mpl-data/example directory. The record array -# stores the date as an np.datetime64 with a day unit ('D') in the date column. +# Load a numpy structured array from yahoo csv data with fields date, open, +# close, volume, adj_close from the mpl-data/example directory. This array +# stores the date as an np.datetime64 with a day unit ('D') in the 'date' +# column. with cbook.get_sample_data('goog.npz') as datafile: - r = np.load(datafile)['price_data'].view(np.recarray) + data = np.load(datafile)['price_data'] fig, ax = plt.subplots() -ax.plot(r.date, r.adj_close) +ax.plot('date', 'adj_close', data=data) # format the ticks ax.xaxis.set_major_locator(years) -ax.xaxis.set_major_formatter(yearsFmt) +ax.xaxis.set_major_formatter(years_fmt) ax.xaxis.set_minor_locator(months) -# round to nearest years... -datemin = np.datetime64(r.date[0], 'Y') -datemax = np.datetime64(r.date[-1], 'Y') + np.timedelta64(1, 'Y') +# round to nearest years. +datemin = np.datetime64(data['date'][0], 'Y') +datemax = np.datetime64(data['date'][-1], 'Y') + np.timedelta64(1, 'Y') ax.set_xlim(datemin, datemax) - # format the coords message box -def price(x): - return '$%1.2f' % x ax.format_xdata = mdates.DateFormatter('%Y-%m-%d') -ax.format_ydata = price +ax.format_ydata = lambda x: '$%1.2f' % x # format the price. ax.grid(True) # rotates and right aligns the x labels, and moves the bottom of the