|
From: Sudheer J. <sud...@ya...> - 2013-06-11 04:37:57
|
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 <cmp...@gm...>
To: mat...@li...
>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 <sud...@ya...> 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 <pmh...@gm...>;
>>To: Sudheer Joseph <sud...@ya...>;
>>Cc: mat...@li... <mat...@li...>;
>>
>>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 <sud...@ya...> 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...@gm...;sud...@ya...
>>>Web- http://oppamthadathil.tripod.com
>>>***************************************************************
>>>
>>>
>>>>________________________________
>>>> From: Sudheer Joseph <sud...@ya...>
>>>>To: Paul Hobson <pmh...@gm...>
>>>>Cc: "mat...@li..." <mat...@li...>
>>>>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...@gm...;sud...@ya...
>>>>Web- http://oppamthadathil.tripod.com
>>>>***************************************************************
>>>>
>>>>
>>>>>________________________________
>>>>> From: Paul Hobson <pmh...@gm...>
>>>>>To: Sudheer Joseph <sud...@ya...>
>>>>>Cc: "mat...@li..." <mat...@li...>
>>>>>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 <sud...@ya...> 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
>>Mat...@li...
>>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
>Mat...@li...
>https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
>
>
|