I did understand that in your first post, but I was focusing more on
your comments about a better date class than this specific bug, but I
see how the a better class would solve this bug too. But we can work
around this -- I committed some changes to the branch and trunk which
checks to see if the datalim have been updated on the call to xaxis
date and if not it will choose a valid default date range for the date
and view lim, but leave the "ignore" setting in place so it won't
affect the autoscaling when you actually do add data. Hit it with
your standard battery of tests and let me know how it works.
Michael, in the process of adding support for this, I added a check to
the Axes.update_datalim to ignore empty lists
def update_datalim(self, xys):
if len(xys): return
but when I ran backend driver, I found a bug on contour_demo.py where
a non-iterable was being passed in for xys. I added a debug print
statement to update_datalim to print type(xys), and here is what I
got, along with the traceback
johnh@...539...:svn> python ~/mpl/examples/pylab_examples/contour_demo.py
<type 'list'>
<type 'list'>
<type 'list'>
<type 'list'>
<type 'tuple'>
<type 'list'>
<type 'numpy.ndarray'>
<class 'matplotlib.transforms.Bbox'>
Traceback (most recent call last):
File "/home/titan/johnh/mpl/examples/pylab_examples/contour_demo.py",
line 83, in ?
CB = colorbar(CS, shrink=0.8, extend='both')
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/pyplot.py",
line 1179, in colorbar
ret = gcf().colorbar(mappable, cax = cax, ax=ax, **kw)
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/figure.py",
line 965, in colorbar
cb = cbar.Colorbar(cax, mappable, **kw)
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/colorbar.py",
line 591, in __init__
self.add_lines(CS)
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/colorbar.py",
line 612, in add_lines
ColorbarBase.add_lines(self, CS.levels, tcolors, tlinewidths)
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/colorbar.py",
line 329, in add_lines
self.ax.add_collection(col)
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/axes.py",
line 1242, in add_collection
self.update_datalim(collection.get_datalim(self.transData))
File "/home/titan/johnh/dev/lib/python2.4/site-packages/matplotlib/axes.py",
line 1313, in update_datalim
if not len(xys): return
TypeError: len() of unsized object
So the collection.get_datalim is returning a transformed bbox and
passing this off to update_datalim. This is easy to work around by
adding an iterable(xys) check, which I did on the branch and the
trunk, but to be sure I am not masking a bug, I wanted to make sure
that this is what should be happening here. I would think we would
call update_datalim_bounds for a bbox....
Thanks,
JDH
JDH
ยทยทยท
On Wed, Jun 4, 2008 at 12:01 PM, Ted Drain <ted.drain@...179...> wrote:
Sorry - I don't think I was very clear in my email. Try this:
import pylab as p
p.plot( ()
p.gca().xaxis_date()
p.show()