|
From: Phil E. <pel...@gm...> - 2013-04-04 16:32:05
|
Hi Mark, Thanks for persevering :-) What is it you want to achieve? Is it that you just want the last day of each month as the located value? Changing your locator to: ax.xaxis.set_major_locator(MonthLocator(bymonthday = -1)) Seems to do the trick for me (I've never looked at the mpl date magic, so I can give no guarantees). HTH, On 4 April 2013 17:18, Mark Lawrence <bre...@ya...> wrote: > On 01/04/2013 14:48, Mark Lawrence wrote: > > On 29/03/2013 15:49, Mark Lawrence wrote: > >> Hi all, > >> > >> From http://labix.org/python-dateutil > >> > >> "To generate a rrule for the use case of "a date on the specified day of > >> the month, unless it is beyond the end of month, in which case it will > >> be the last day of the month" use the following: > >> > >> rrule(MONTHLY, bymonthday=(some_day, -1), bysetpos=1) > >> > >> This will generate a value for every calendar month regardless of the > >> day of the month it is started from." > >> > >> Using bymonthday with MonthLocator gives ticks on the day given and the > >> last day of the month, which looks extremely ugly. Code below > demonstrates. > >> > >> from dateutil.rrule import * > >> import datetime > >> import matplotlib.pyplot as plt > >> from matplotlib.ticker import FormatStrFormatter, MultipleLocator > >> from matplotlib.dates import DateFormatter, MonthLocator, DayLocator > >> > >> start = datetime.date(2013, 3, 29) > >> until = datetime.date(2014, 3, 29) > >> dates = rrule(MONTHLY, bymonthday=(29, -1), bysetpos=1, until=until) > >> for d in dates:print(d) > >> > >> dates = [start, until] > >> values = [0, 1] > >> plt.ylabel('Balance') > >> plt.grid() > >> ax = plt.subplot(111) > >> plt.plot_date(dates, values, fmt = 'rx-') > >> ax.xaxis.set_major_locator(MonthLocator(bymonthday = (dates[0].day, > -1))) > >> ax.xaxis.set_major_formatter(DateFormatter('%d/%m/%y')) > >> ax.yaxis.set_major_formatter(FormatStrFormatter('£%0.2f')) > >> ax.yaxis.set_minor_locator(MultipleLocator(5)) > >> plt.axis(xmin=dates[0], xmax=dates[-1]) > >> plt.setp(plt.gca().get_xticklabels(), rotation = 45, fontsize = 10) > >> plt.setp(plt.gca().get_yticklabels(), fontsize = 10) > >> plt.show() > >> > > > > Seems an apt date to realise that I didn't say much :( > > > > Assuming that I'm correct would you like an issue raised on the bug > > tracker? If not please correct the mistake I've made, presumably in > > reading the docs, which I think are excellent by the way. > > > > Anybody? > > -- > If you're using GoogleCrap™ please read this > http://wiki.python.org/moin/GoogleGroupsPython. > > Mark Lawrence > > > > ------------------------------------------------------------------------------ > Minimize network downtime and maximize team effectiveness. > Reduce network management and security costs.Learn how to hire > the most talented Cisco Certified professionals. Visit the > Employer Resources Portal > http://www.cisco.com/web/learning/employer_resources/index.html > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |