Thank you Eric and CM, I have the below piece of code and added the new definition for minorLocs, but gets the below error. I believe I did not fully understand the concept you mentioned.
minorLocs = mdates.MonthLocator(bymonth=[1,3,5,7,9,11],bymonthday=15) minorFmt = mdates.DateFormatter('%b') class MonthLetter(minorFmt): def __init__(self): DateFormatter.__init__(self, "%b") def __call__(*args): s = DateFormatter.__call__(*args) return s[:1] minorFmt = MonthLetter() 531 def viewlim_to_dt(self): --> 532 vmin, vmax = self.axis.get_view_interval() 533 return num2date(vmin, self.tz), num2date(vmax, self.tz) 534 AttributeError: 'NoneType' object has no attribute 'get_view_interva From: Eric Firing <efir...@hawaii.edu> To: matplotlib-users@lists.sourceforge.net >Sent: Tuesday, 11 June 2013 6:11 AM >Subject: Re: [Matplotlib-users] time axis format > > >On 2013/06/10 2:08 PM, Sudheer Joseph wrote: >> >> Thank you, >> So there is no way to get J F M A etc with out reducing font size? We >> often need to make presentation in front of senior people who insist for >> bigger fonts. >> With best regards, >> Sudheer > >One way is to subclass DateFormatter, e.g., > >class MonthLetter(DateFormatter): > def __init__(self): > DateFormatter.__init__(self, "%b") > > def __call__(*args): > s = DateFormatter.__call__(*args) > return s[:1] > >class MonthLetterYear(DateFormatter): > def __init__(self): > DateFormatter.__init__(self, "%b\n%Y") > > def __call__(*args): > s = DateFormatter.__call__(*args) > return = s[:1] + s[3:] > >... > >majorFmt = MonthLetterYear() >minorFmt = MonthLetter() > > >Not tested, but something like that should work. > >Eric > > >> >> >> ------------------------------------------------------------------------ >> *From: * Paul Hobson <pmhob...@gmail.com>; >> *To: * Sudheer Joseph <sudheer.jos...@yahoo.com>; >> *Cc: * matplotlib-users@lists.sourceforge.net >> <matplotlib-users@lists.sourceforge.net>; >> *Subject: * Re: [Matplotlib-users] time axis format >> *Sent: * Mon, Jun 10, 2013 8:08:18 PM >> >> In that case, I would use ax.tick_params(...) to make the font smaller. >> >> >> On Sat, Jun 8, 2013 at 7:36 AM, Sudheer Joseph <sudheer.jos...@yahoo.com >> <javascript:return>> wrote: >> >> Dear Paul, >> The issue I am facing is like in the attached plot >> where the month naming get cluttered. >> with best regards, >> Sudheer >> *************************************************************** >> Sudheer Joseph >> Indian National Centre for Ocean Information Services >> Ministry of Earth Sciences, Govt. of India >> POST BOX NO: 21, IDA Jeedeemetla P.O. >> Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 >> Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), >> Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) >> E-mail:sjo.in...@gmail.com >> <javascript:return>;sudheer.jos...@yahoo.com <javascript:return> >> Web- http://oppamthadathil.tripod.com >> *************************************************************** >> >> >>------------------------------------------------------------------------ >> *From:* Sudheer Joseph <sudheer.jos...@yahoo.com >> <javascript:return>> >> *To:* Paul Hobson <pmhob...@gmail.com <javascript:return>> >> *Cc:* "matplotlib-users@lists.sourceforge.net >> <javascript:return>" <matplotlib-users@lists.sourceforge.net >> <javascript:return>> >> *Sent:* Saturday, 8 June 2013 7:46 PM >> >> *Subject:* Re: [Matplotlib-users] time axis format >> >> Thank you Paul for the helping hand, >> However I was looking for >> slightly different solution like in the attached plots. I used >> ferret to do this based on the length of the time axis it chose >> the mode of labelling. for example in case of 2 year plot it >> made month labeling as j f m etc and in case of 1 year as there >> is enough space on x axis it made jan feb etc with single label >> of year. >> >> In the attached python plot (ATser_RAMA_HYCOM_U_8n90e.png) every >> tick point is lablled for year, which I wanted to avoid and get >> plots similar to the first types thought it is not done >> automatically but at least manually. >> >> >> *************************************************************** >> Sudheer Joseph >> Indian National Centre for Ocean Information Services >> Ministry of Earth Sciences, Govt. of India >> POST BOX NO: 21, IDA Jeedeemetla P.O. >> Via Pragathi Nagar,Kukatpally, Hyderabad; Pin:5000 55 >> Tel:+91-40-23886047(O),Fax:+91-40-23895011(O), >> Tel:+91-40-23044600(R),Tel:+91-40-9440832534(Mobile) >> E-mail:sjo.in...@gmail.com >> <javascript:return>;sudheer.jos...@yahoo.com <javascript:return> >> Web- http://oppamthadathil.tripod.com >> *************************************************************** >> >> >>------------------------------------------------------------------------ >> *From:* Paul Hobson <pmhob...@gmail.com <javascript:return>> >> *To:* Sudheer Joseph <sudheer.jos...@yahoo.com >> <javascript:return>> >> *Cc:* "matplotlib-users@lists.sourceforge.net >> <javascript:return>" <matplotlib-users@lists.sourceforge.net >> <javascript:return>> >> *Sent:* Friday, 7 June 2013 8:50 PM >> *Subject:* Re: [Matplotlib-users] time axis format >> >> >> >> >> On Thu, Jun 6, 2013 at 11:39 PM, Sudheer Joseph >> <sudheer.jos...@yahoo.com <javascript:return>> wrote: >> >> Dear Experts, >> I have been experimenting with the >> plot_dates option of matplotlib to plot time series data >> and have below questions >> >> I have used >> loc = mdates.AutoDateLocator() >> ax.xaxis.set_major_locator(loc) >> ax.xaxis.set_major_formatter(mpl.dates.DateFormatter('%b\n >> %Y')) >> >> >> and got the tick labels in attached plot >> >> However I feel the repeatd year labeling is not needed >> here and it is required once in a year only , Also if I >> need to plot long time seris insted of "MAR" "APR" I >> wanted to get them reduced to "M" "A" etc so that the >> lavel congestion can be avoided. >> >> >> I notice that below options are available, but was >> wondering how commbinatins of these locateors are used >> ie mark every month and every year once each. >> >> >> Is there a way to achive the above or does it need >> further development? >> >> fmt = mdates.DateFormatter('%Y-%m-%d') >> loc = >> mdates.WeekdayLocator(byweekday=mdates.MONDAY,interval=4) >> locator = mdates.YearLocator() >> >> >> If I were trying to do this, I'd cobble something together >> using by the minor and major formatters. >> e.g.,... >> import matplotlib.dates as mdates >> import matplotlib.pyplot as plt >> >> fig, ax = plt.subplots() >> >> majorLocs = mdates.MonthLocator(bymonth[1,7]) >> majorFmt = mdates.DateFormatter('%b\n%Y') >> >> minorLocs = mdates.MonthLocator(bymonth[1,7]) >> minorFmt = mdates.DateFormatter('%b') >> >> ax.xaxis.set_major_locator(majorLocs) >> ax.xaxis.set_major_formatter(majorFmt) >> >> ax.xaxis.set_minor_locator(minorLocs) >> ax.xaxis.set_minor_formatter(minorFmt) >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> This SF.net email is sponsored by Windows: >> >> Build for Windows Store. >> >> http://p.sf.net/sfu/windows-dev2dev >> >> >> >> _______________________________________________ >> Matplotlib-users mailing list >> Matplotlib-users@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> > > >------------------------------------------------------------------------------ >This SF.net email is sponsored by Windows: > >Build for Windows Store. > >http://p.sf.net/sfu/windows-dev2dev >_______________________________________________ >Matplotlib-users mailing list >Matplotlib-users@lists.sourceforge.net >https://lists.sourceforge.net/lists/listinfo/matplotlib-users > > > ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users