On Tue, Nov 30, 2010 at 12:23 PM, Ryan May <rma...@gmail.com> wrote:

> On Tue, Nov 30, 2010 at 10:44 AM, C M <cmpyt...@gmail.com> wrote:
> >
> >
> > On Sun, Nov 28, 2010 at 8:52 PM, C M <cmpyt...@gmail.com> wrote:
> >>
> >> How can I correctly subclass AutoDateFormatter and use it in my code?
> >>
> >> What I am doing is copying the code from matplotlib's AutoDateFormatter
> >> and changing the strings for how the dates are represented and making
> that a
> >> class, MyAutoDateFormatter.  AutoDateFormatter expects a locator, and I
> >> think (?) the default is AutoDateLocator.  So in my code I am doing
> this:
> >>
> >>         adl = AutoDateLocator()
> >>         myformatter = MyAutoDateFormatter(adl)
> >>         axis.xaxis.set_major_formatter(myformatter)
> >>
> >> But when I run it, no matter the level of zoom, it says "2010" (when it
> >> should change depending on zoom level).
> >>
> >> However, if I go into the matplotlib dates.py code itself and save the
> >> same changes to the date strings there, and I comment out the above
> code,
> >> then it works:  the date strings change depending on level of zoom.
> >
> > I've also just noticed that if I use the above code after the lines have
> > been plotted, but then I click on one of the points (which causes a
> > point-picking routine that ultimately plots a highlighting marker over
> that
> > point), the x axis suddenly changes to use MyAutoDateFormatter's format
> > strings.  (If I call it before I plot anything, it doesn't help, though).
> >
> > Is the act of plotting somehow "refreshing" things?  What can I call in
> > order to force this to happen without actually plotting any additional
> > points after my lines are plotted?
>
> It's difficult to tell without seeing the code that's producing the
> problem. If you can boil your problem down to a simple, self-contained
> script and post it here, then we can take a look and see what's going
> on.
>

Thanks, Ryan.  I've done that now.  I use the OOP approach to matplotlib and
embed it in wxPython, so my example uses that.  I did not know how to apply
an AutoDateFormatter to an axis if using pylab and figured the basics of
what I am trying to do are apparent from this sample.

The sample is attached.  The point of it is that, despite it apparently
using my AutoDateFormatter, all the dates at all levels of zoom are %Y (e.g.
"2010").  This is because in the AutoDateFormatter subclass, the line:

scale = float( self._locator._get_unit() )

is *always* returning 365.0.

I am not bothering for now to include the business about how point-picking
remedies my problem, because the AutoDateFormatter shouldn't need
that--obviously, the way I am doing it is wrong, and I'd like to know what
it is.

Thanks for any help,
Che

Attachment: plot_test.py
Description: Binary data

------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to