Simson Garfinkel wrote:
> Hi. It's me again, asking about dates again.
> 
> is there any easy way to a collection using dates on the X axes?    
> I've taken the collection example from the website and adopted it so  
> that there is a use_dates flag. Set it to False and spirals demo  
> appears. Set it to True and I get this error:

Yes, it looks like a bug in the handling of units in the Collection base 
class; unit conversion is done at drawing time, but needs either to be 
done earlier, or to be done independently in the get_datalim method.

Maybe one of the units-support experts will pick this up and fix it.  I 
can't do more now.

Eric

> 
> Traceback (most recent call last):
>    File "mpl_collection2.py", line 51, in <module>
>      ax.add_collection(col, autolim=True)
>    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
> python2.6/site-packages/matplotlib/axes.py", line 1312, in  
> add_collection
>      self.update_datalim(collection.get_datalim(self.transData))
>    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
> python2.6/site-packages/matplotlib/collections.py", line 144, in  
> get_datalim
>      offsets = transOffset.transform_non_affine(offsets)
>    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
> python2.6/site-packages/matplotlib/transforms.py", line 1914, in  
> transform_non_affine
>      self._a.transform(points))
>    File "/Library/Frameworks/Python.framework/Versions/2.6/lib/ 
> python2.6/site-packages/matplotlib/transforms.py", line 1408, in  
> transform
>      return affine_transform(points, mtx)
> ValueError: Invalid vertices array.
> 
> 
> The code is below.
> 
> Thanks!
> 
> =========================
> import matplotlib
> import matplotlib.pyplot
> from matplotlib import collections, transforms
> from matplotlib.colors import colorConverter
> import numpy as N
> 
> import datetime
> 
> use_dates = False
> 
> nverts = 50
> npts = 100
> 
> # Make some spirals
> r = N.array(range(nverts))
> theta = N.array(range(nverts)) * (2*N.pi)/(nverts-1)
> xx = r * N.sin(theta)
> yy = r * N.cos(theta)
> spiral = zip(xx,yy)
> 
> # Make some offsets
> rs = N.random.RandomState([12345678])
> 
> if not use_dates:
>      xo = [i for i in range(0,100)]
> else:
>      xo = [datetime.date(1990,1,1)+datetime.timedelta(10)*i for i in  
> range(0,100)]  # new version
> 
> yo = rs.randn(npts)
> xyo = zip(xo, yo)
> colors = [colorConverter.to_rgba(c) for c in  
> ('r','g','b','c','y','m','k')]
> 
> fig = matplotlib.pyplot.figure()
> ax = fig.add_subplot(1,1,1)
> 
> if use_dates:
>      import matplotlib.dates as mdates
>      years    = mdates.YearLocator()   # every year
>      months   = mdates.MonthLocator()  # every month
>      yearsFmt = mdates.DateFormatter('%Y')
>      ax.xaxis.set_major_locator(years)
>      ax.xaxis.set_major_formatter(yearsFmt)
>      ax.set_xlim(datetime.date(1990,1,1),datetime.date(1992,12,31))
> 
> col = collections.LineCollection([spiral], offsets=xyo,  
> transOffset=ax.transData)
> trans = fig.dpi_scale_trans + transforms.Affine2D().scale(1.0/72.0)
> col.set_transform(trans)  # the points to pixels transform
> ax.add_collection(col, autolim=True)
> col.set_color(colors)
> 
> ax.autoscale_view()
> ax.set_title('LineCollection using offsets')
> matplotlib.pyplot.show()
> 
> 
> ------------------------------------------------------------------------------
> Check out the new SourceForge.net Marketplace.
> It is the best place to buy or sell services for
> just about anything Open Source.
> http://p.sf.net/sfu/Xq1LFB
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to