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
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