Re: [Matplotlib-users] cross correlation

2013-02-08 Thread Sterling Smith
Sudheer,

For the documentation you are looking for

print ax1.xcorr.__doc__

(Paul tried to give you the IPython method of getting that documentation which 
is by typing a ? (or ??) after the desired object.)

In the documentation (at the link you gave 
http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xcorr), it says 
that there are three objects returned by xcorr:
Return value is a tuple (*lags*, *c*, *line*) where:

  - *lags* are a length ``2*maxlags+1`` lag vector

  - *c* is the ``2*maxlags+1`` auto correlation vector

  - *line* is a :class:`~matplotlib.lines.Line2D` instance
 returned by :func:`~matplotlib.pyplot.plot`.

So the error you were getting is due to the fact that you have only specified 
two variables to hold the three returned objects.

Try:
lags,c,line = ax1.xcorr   .

(Note that you have xcorr and lags backwards in your attempt.)

-Sterling

On Feb 8, 2013, at 1:56AM, Sudheer Joseph wrote:

 Thank you verymuch Hobson,
   However I think I did not understand 
 the suggestion by you fully( pardon my ignorance). I use the below test code 
 from matplotlib site. How does one make a call to get lags and correlation 
 corresponding to the x and y values in the plot. a Print command of  
 In [23]: print ax1.xcorr
 bound method AxesSubplot.xcorr of matplotlib.axes.AxesSubplot object at 
 0x44c1410
 results as above. Is it possible to assign the xcorr,lags=ax1.xcorr(x, y, 
 usevlines=True, maxlags=50, normed=True, lw=2) ? with a different syntax? I 
 get below error when I try the above .
 In [27]: xcorr,lags=ax1.xcorr(x, y, usevlines=True, maxlags=50, normed=True, 
 lw=2)
 ---
 ValueErrorTraceback (most recent call last)
 /home/sjo/work/PY_WORK/stats/ipython-input-27-e1e58c045ad4 in module()
  1 xcorr,lags=ax1.xcorr(x, y, usevlines=True, maxlags=50, normed=True, 
 lw=2)
 
 ValueError: too many values to unpack
 
 
 
 import matplotlib.pyplot as plt
 import numpy as np
 x,y = np.random.randn(2,100)
 fig = plt.figure()
 ax1 = fig.add_subplot(211)
 ax1.xcorr(x, y, usevlines=True, maxlags=50, normed=True, lw=2)
 ax1.grid(True)
 ax1.axhline(0, color='black', lw=2)
 ax2 = fig.add_subplot(212, sharex=ax1)
 ax2.acorr(x, usevlines=True, normed=True, maxlags=50, lw=2)
 ax2.grid(True)
 ax2.axhline(0, color='black', lw=2)
 plt.show()
 
  
 From: Paul Hobson pmhob...@gmail.com
 To: Sudheer Joseph sudheer.jos...@yahoo.com 
 Cc: matplotlib-users@lists.sourceforge.net 
 matplotlib-users@lists.sourceforge.net 
 Sent: Thursday, 7 February 2013 10:31 PM
 Subject: Re: [Matplotlib-users] cross correlation
 
 
 
 
 On Thu, Feb 7, 2013 at 3:24 AM, Sudheer Joseph sudheer.jos...@yahoo.com 
 wrote:
 Dear Users,
   I am relatively new to Matplotlib. I wanted to find cross 
 correlation between 2 time series for my research and was looking at options 
 available with python and found 
 http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.xcorr . However I 
 wanted to save the results in a netcdf file for further use. ie the 
 correlation, lags and significance if possible. Is there a way to get the 
 corr and lags from the axis.xcorr ?? any help in this matter will be greatly 
 appreciated. 
 Sudheer
 
 Sudheer,
 
 A call to axes.xcorr returns the lags, correlation (from np.correlate) and 
 the line artists on the figure.
 
 In IPython, doing plt.xcorr?? should provide sufficient information. It's a 
 pretty simple method.
 -paul
 
 
 --
 Free Next-Gen Firewall Hardware Offer
 Buy your Sophos next-gen firewall before the end March 2013 
 and get the hardware for free! Learn more.
 http://p.sf.net/sfu/sophos-d2d-feb___
 Matplotlib-users mailing list
 Matplotlib-users@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/matplotlib-users


--
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users


[Matplotlib-users] importing basemap then shapely causes error

2013-02-08 Thread David Hoese
I've asked this question on GIS stack exchange site, but thought it 
would be good to post here too.  The SE question is here: 
http://gis.stackexchange.com/questions/50394/importing-matplotlib-basemap-and-shapely


I have a python script that uses matplotlib's basemap and another part 
that uses shapely to do an intersection of 2 polygons. If basemap is 
imported before shapely and I run the intersection I get this exception:


|   intersect_poly=  grid_poly.intersection(data_poly)
File  /sw/lib/python2.7/site-packages/shapely/geometry/base.py,  line334,  in 
 intersection
  return  geom_factory(self.impl['intersection'](self,  other))
File  /sw/lib/python2.7/site-packages/shapely/topology.py,  line53,  in  
__call__
  This operation produced a null geometry. Reason: unknown)
shapely.geos.TopologicalError:  This  operation produced a null geometry.  
Reason:  unknown|

If I import shapely first, everything works fine. I would assume this is 
because of some funkiness in the way they are accessing the GEOS 
library. I've checked that in both situations the same library file is 
loaded in shapely (print shapely.geos._lgeos).


Does anyone have an idea as to why this is happening and if there is a 
right way of doing this? Does this happen for anyone else? In the mean 
time I can just make sure to import shapely first (not sure if that 
affects basemap yet). Otherwise maybe I'll skim through the basemap source.


I'm using OSX(10.7) with a fink install that has libgeos3.3.3-shlibs, 
libgeos3.3.1-shlibs, libgeos3.3.1, libgeos3.3.0-shlibs, 
libgeos3.3.0, and shapely-py27 (1.2.16-1) installed. The current 
basemap version in fink is 1.0.2.


And here's a simple test script that reproduces the problem (flip the 
imports and it works):


|from  mpl_toolkitsimport  basemap
from  shapelyimport  geometry

g_ring=  [(-88.462425,  26.992203),  (-57.847187,  26.992203),  (-57.847187,  
17.599869),  (-88.462425,  17.599869),  (-88.462425,  26.992203)]
grid_g_ring=  [(-123.044,  59.8440001),  (-49.3849998,  
57.2890001),  (-65.0909994,  14.3350001),  (-113.133,  
16.369),  (-123.044,  59.8440001)]

data_poly=  geometry.Polygon(g_ring)
grid_poly=  geometry.Polygon(grid_g_ring)

print  grid_poly.intersection(data_poly).area|


Thanks again.  Please CC me in any replies.

-Dave
--
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb___
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users