Thank you CM, I tried to rotate the labels but only major ticks get rotated and when I try with minor ticks as below I get error
minlabels = ax.xaxis.get_minor_ticks() p.xticks(minlabels,rotation=90) --> 192 base = float(dt.toordinal()) 193 if hasattr(dt, 'hour'): 194 base += (dt.hour/HOURS_PER_DAY + dt.minute/MINUTES_PER_DAY + AttributeError: 'XTick' object has no attribute 'toordinal' From: C M <cmpyt...@gmail.com> To: matplotlib-users@lists.sourceforge.net >Sent: Tuesday, 11 June 2013 6:41 AM >Subject: Re: [Matplotlib-users] time axis format > > > > > > >On Mon, Jun 10, 2013 at 8:08 PM, Sudheer Joseph <sudheer.jos...@yahoo.com> >wrote: > > >>Thank you, >>So there is no way to get J F M A etc with out reducing font size? > >I bet there a number of ways. Offhand I don't know the one that, once I hear >about it, I will say, "D'oh, that's so easy" but I bet it exists. But you >could modify the DateFormatter class. It is set to return a strftime result >string. Here is the function: > >def __call__(self, x, pos=0): > if x==0: > raise ValueError('DateFormatter found a value of x=0, which is an >illegal date. This usually occurs because you have not informed the axis that >it is plotting dates, eg with ax.xaxis_date()') > dt = num2date(x, self.tz) > return self.strftime(dt, self.fmt) > >All you would have to do is change that last line to: > > return self.strftime(dt, self.fmt)[0] > >To slice just the first letter of the month. > >So you could subclass DateFormatter to do this, since you probably don't want >to modify the actual DateFormatter class always in this way. > >Also, aside from the J F M A approach, you could just rotate the month's name, >and that will reduce crowding while keeping the month a little clearer (I >think "JAN FEB MAR APR" is more intuitive and pleasant to read on a graph). > >Che > > > >We often need to make presentation in front of senior people who insist for >bigger fonts. >>With best regards, >>Sudheer >> >> >> >>________________________________ >> 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> >>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;sudheer.jos...@yahoo.com >>>Web- http://oppamthadathil.tripod.com >>>*************************************************************** >>> >>> >>>>________________________________ >>>> From: Sudheer Joseph <sudheer.jos...@yahoo.com> >>>>To: Paul Hobson <pmhob...@gmail.com> >>>>Cc: "matplotlib-users@lists.sourceforge.net" >>>><matplotlib-users@lists.sourceforge.net> >>>>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;sudheer.jos...@yahoo.com >>>>Web- http://oppamthadathil.tripod.com >>>>*************************************************************** >>>> >>>> >>>>>________________________________ >>>>> From: Paul Hobson <pmhob...@gmail.com> >>>>>To: Sudheer Joseph <sudheer.jos...@yahoo.com> >>>>>Cc: "matplotlib-users@lists.sourceforge.net" >>>>><matplotlib-users@lists.sourceforge.net> >>>>>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> >>>>>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