Goyo wrote:
> El dom, 12-10-2008 a las 13:22 -1000, Eric Firing escribió: 
>> Goyo wrote:
>>> Hi all,
>>>
>>> I'm plotting time series and using a custom format for x tick labels
>>> because I want to see both date and time. But calling xlim makes the
>>> default format return -- only dates or only times, it depends on the
>>> displayed interval.
>>>
>>> I can get my preferred format back by calling set_major_formatter again,
>>> but this is inconvenient for interactive use.
>>>
>>> I wonder if there is a better way for changing x limits while keeping
>>> tick labels format unchanged.
>>>
>>> I'm using matplotlib 0.98.3
>>>
>>> Thanks
>>>
>>> Goyo
>>>
>>>
>>> Sample code -- you need a combination of python shell and matplotlib GUI
>>> which allows for interactive use in order to get this working as
>>> expected:
>>>
>>> ----------------------------------------
>>>
>>> from matplotlib import pyplot
>>> from matplotlib import dates
>>> from datetime import datetime, timedelta
>>> from numpy import random
>>>
>>> pyplot.ion()
>>>
>>> # create data
>>> dstart = datetime(2008, 1, 1, 0, 0)
>>> dend = datetime(2008, 1, 5, 23, 50)
>>> delta = timedelta(minutes=10)
>>> x = dates.drange(dstart, dend, delta)
>>> y = random.random_sample(len(x))
>>>
>>> # plot data
>>> pyplot.plot(x, y)
>>>
>>> # format x tick labels
>>> axis = pyplot.gca()
>>> fig = pyplot.gcf()
>>> axis.xaxis.set_major_formatter(dates.DateFormatter('%Y-%b-%d %H:%M'))
>>> fig.autofmt_xdate()
>>>
>>> # draw the figure
>>> pyplot.draw()
>>>
>>> --------------------------------------
>>>
>>> Look at the tick labels, they show both date and time even if you zoom
>>> and pan using the GUI.
>>>
>>> Now if I want to look at the second day:
>>>
>>> dstart = datetime(2008, 1, 1, 0, 0)
>>> dend = datetime(2008, 1, 1, 23, 50)
>>> pyplot.xlim(dstart, dend)
>>>
>>> And the format has changed.
>> I don't see this problem using ipython -pylab with mpl from svn on 
>> linux, gtkagg backend.  What version, backend, and platform are you using?
> 
> matplotlib 0.98.3-3ubuntu1~ppa1 from Benjamin Drung's ppa
> (<http://ppa.launchpad.net/bdrung/ubuntu>) on Ubuntu Hardy.
> 
> It was the standard python shell and TKAgg, but I get the same result
> with ipython -pylab and GTKAgg. Indeed the format change can be
> "documented":
> 
> print axis.xaxis.get_major_formatter()
> pyplot.xlim(dstart, dend)
> print axis.xaxis.get_major_formatter()
> 
> The first print:
> <matplotlib.dates.DateFormatter instance at 0xb6e2462c>
> and the second:
> <matplotlib.dates.AutoDateFormatter instance at 0x884dc4c>
> 
> I did some debugging and realized that xaxis.units is None after
> plotting, so xlim triggers a call to xaxis.set_units which sets the
> default formatter (and units, whatever it means).
> 
> If I set my formatter again, xaxis.units is not None anymore but still
> xaxis._update_axisinfo sets the default formatter.
> 
> Anyway I worked around this by writing my own version of xlim which
> first saves the formatter, then sets xlim and sets the saved formatter
> again.
> 
> Goyo
> 

I know some work was done on units support since 0.98.3; given that I am 
not seeing the problem when I try your original example with svn mpl, I 
hope and suspect that this problem has in fact already been solved.

Eric


-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to