On 6/10/07, rolandreichel <[EMAIL PROTECTED]> wrote:

> I want to plot some timeseries (eg. stockcharts). I use now
> DateLocator/Formatter, it works fine for me with the exeption, that
> dataless periods on X-Axis (eg. weekends) are also plotted. Is there an
> easy way to suppress them?

Plot numpy.arange(len(xdata)) vs y and use a custom tick locator to
format the integer index to date strings.  Some of the code below is
using svn (eg the csv2rec stuff) but the core logic of formatting date
strings from integers works with any reasonably current mpl.


# plot dates evenly spaced, eg skipping weekends
import numpy
from matplotlib.mlab import csv2rec
from pylab import figure, show
from matplotlib.dates import Formatter

r = csv2rec('data/msft.csv')[-40:]

class MyFormatter(Formatter):
    def __init__(self, dates, fmt='%Y-%m-%d'):
        self.dates = dates
        self.fmt = fmt

    def __call__(self, x, pos=0):
        'Return the label for time x at position pos'
        ind = int(round(x))
        if ind>=len(self.dates) or ind<=0: return ''

        return self.dates[ind].strftime(self.fmt)

formatter = MyFormatter(r.date)

fig = figure()
ax = fig.add_subplot(111)
ax.xaxis.set_major_formatter(formatter)
ax.plot(numpy.arange(len(r)), r.close, 'o-')
fig.autofmt_xdate()
show()

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to