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 <[email protected]>
To: [email protected]
>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 <[email protected]>;
>> *To: * Sudheer Joseph <[email protected]>;
>> *Cc: * [email protected]
>> <[email protected]>;
>> *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 <[email protected]
>> <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:[email protected]
>> <javascript:return>;[email protected] <javascript:return>
>> Web- http://oppamthadathil.tripod.com
>> ***************************************************************
>>
>>
>>------------------------------------------------------------------------
>> *From:* Sudheer Joseph <[email protected]
>> <javascript:return>>
>> *To:* Paul Hobson <[email protected] <javascript:return>>
>> *Cc:* "[email protected]
>> <javascript:return>" <[email protected]
>> <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:[email protected]
>> <javascript:return>;[email protected] <javascript:return>
>> Web- http://oppamthadathil.tripod.com
>> ***************************************************************
>>
>>
>>------------------------------------------------------------------------
>> *From:* Paul Hobson <[email protected] <javascript:return>>
>> *To:* Sudheer Joseph <[email protected]
>> <javascript:return>>
>> *Cc:* "[email protected]
>> <javascript:return>" <[email protected]
>> <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
>> <[email protected] <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
>> [email protected]
>> 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
>[email protected]
>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
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-users