x-axis Label in hh:mm:ss format

Hi, I have time data stored in the format hh:mm:ss and

    > would like to plot it, having about 4 to 6 ticks labeled
    > in this format. What I'm doing at the moment is to
    > first convert my time to seconds and plot y as function
    > of yime in seconds.

You first need to convert them to matplotlib dates. Assume your data
are collected on Oct 10th, 2006

  import matplotlib.numerix as nx
  import datetime
  from matplotlib.dates import date2num, MINUTES_PER_DAY, SEC_PER_DAY

  d0 = date2num(datetime.date(2006,10,10))
  def convert(s):
      h,m,s = map(float, s.split(':'))
      return d0 + h/24. + m/MINUTES_PER_DAY + s/SEC_PER_DAY

In [11]: convert('12:32:02')
Out[11]: 732594.52224537032

matplotlib represents dates as days (float) since 0000-00-00

Now you need to convert your list of strings to mpl dates. If your
list of strings is called datestrs

  dates = nx.array([convert(s) for s in datestrs])

Now when you plot you need to tell mpl you are plotting dates

  ax.plot_date(dates, vals)

We have pretty smart tick locators and tick formatters for date
plotting, so you may be happy with what you get, but if not you can
set your own

  from matplotlib.dates import DateFormatter
  ax.xaxis.set_major_formatter('%H:%M:%S')

I also find it helpful on date plots to do the following

   # move the subplot up a bit to make for rotated labels
   fig.subplots_adjust(bottom=0.15)
   for label in ax.get_xticklabels():
       label.set_rotation(30)
       label.set_horizontalalignment('right')
  
see also

  http://matplotlib.sf.net/matplotlib.dates.html
  http://matplotlib.sf.net/matplotlib.ticker.html

the users guide and the following examples

date_demo1.py
date_demo2.py
date_demo_convert.py
date_demo_rrule.py
finance_demo.py

JDH