Re: [Matplotlib-users] griddata fails
Yes, you are absolutely correct. I did not realize that I did not actually evaluate the function over a grid, makes sense that interpolation fails. I thought that since I created the two axis vectors the function evaluation occurs over the entire domain, meshgrid is what I was missing. thanks, Shahar On Jan 9, 2013, at 8:45 PM, Ian Thomas wrote: On 9 January 2013 09:32, Shahar Shani-Kadmiel kadm...@post.bgu.ac.il wrote: Hi, I'm trying to contour some data that I have and the griddata line fails. I tried running it on some synthetically generated data and I get the same IndexError. Any Ideas? Here is the example with the synthetic data: x = y = arange(-10,10,0.01) z = x**2+y**3 xi = yi = linspace(-10.1, 10.1, 100) zi = griddata(x, y, z, xi, yi) --- IndexErrorTraceback (most recent call last) ipython-input-52-0458ab6ea672 in module() 1 zi = griddata(x, y, z, xi, yi) /Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/mlab.py in griddata(x, y, z, xi, yi, interp) 2766 xi,yi = np.meshgrid(xi,yi) 2767 # triangulate data - 2768 tri = delaunay.Triangulation(x,y) Hello Shahar, I think that your simple example is probably not what you intended. Your (x,y) points are all defined on the straight line from (-10,-10) to (10,10). The Delaunay triangulation of these points (which is what griddata does) is not very interesting! Perhaps you wanted (x,y) defined on the 2D grid from (-10,-10) to (10,10), in which case you should follow the x = y ... line with, for example: x, y = meshgrid(x, y) (see numpy.meshgrid for further details). You may still obtain the same IndexError, and the traceback shows this is happening in the delaunay.Triangulation function call. The matplotlib delaunay package is not particularly robust, and can have problems handling regularly-spaced data points. The griddata documentation explains some of this, see http://matplotlib.org/api/mlab_api.html#matplotlib.mlab.griddata. To avoid the problem, the griddata documentation explains one possible way that uses the natgrid algorithm. A simpler solution that I often use is to add a very small amount of noise to my regularly-spaced (x,y) points using the numpy.random module. I can give more details if you wish. Ian -- Master Visual Studio, SharePoint, SQL, ASP.NET, C# 2012, HTML5, CSS, MVC, Windows 8 Apps, JavaScript and much more. Keep your skills current with LearnDevNow - 3,200 step-by-step video tutorials by Microsoft MVPs and experts. ON SALE this month only -- learn more at: http://p.sf.net/sfu/learnmore_122712___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] griddata fails
Hi, I'm trying to contour some data that I have and the griddata line fails. I tried running it on some synthetically generated data and I get the same IndexError. Any Ideas? Here is the example with the synthetic data: x = y = arange(-10,10,0.01) z = x**2+y**3 xi = yi = linspace(-10.1, 10.1, 100) zi = griddata(x, y, z, xi, yi) --- IndexErrorTraceback (most recent call last) ipython-input-52-0458ab6ea672 in module() 1 zi = griddata(x, y, z, xi, yi) /Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/mlab.py in griddata(x, y, z, xi, yi, interp) 2766 xi,yi = np.meshgrid(xi,yi) 2767 # triangulate data - 2768 tri = delaunay.Triangulation(x,y) 2769 # interpolate data 2770 if interp == 'nn': /Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/delaunay/triangulate.py in __init__(self, x, y) 88 self.triangle_neighbors = delaunay(self.x, self.y) 89 --- 90 self.hull = self._compute_convex_hull() 91 92 def _collapse_duplicate_points(self): /Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/delaunay/triangulate.py in _compute_convex_hull(self) 113 114 edges = {} -- 115 edges.update(dict(zip(self.triangle_nodes[border[:,0]][:,1], 116 self.triangle_nodes[border[:,0]][:,2]))) 117 edges.update(dict(zip(self.triangle_nodes[border[:,1]][:,2], IndexError: invalid index -- Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery and much more. Keep your Java skills current with LearnJavaNow - 200+ hours of step-by-step video tutorials by Java experts. SALE $49.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122612 ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] griddata fails
On 9 January 2013 09:32, Shahar Shani-Kadmiel kadm...@post.bgu.ac.ilwrote: Hi, I'm trying to contour some data that I have and the griddata line fails. I tried running it on some synthetically generated data and I get the same IndexError. Any Ideas? Here is the example with the synthetic data: x = y = arange(-10,10,0.01) z = x**2+y**3 xi = yi = linspace(-10.1, 10.1, 100) zi = griddata(x, y, z, xi, yi) --- IndexErrorTraceback (most recent call last) ipython-input-52-0458ab6ea672 in module() 1 zi = griddata(x, y, z, xi, yi) /Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/site-packages/matplotlib/mlab.py in griddata(x, y, z, xi, yi, interp) 2766 xi,yi = np.meshgrid(xi,yi) 2767 # triangulate data - 2768 tri = delaunay.Triangulation(x,y) Hello Shahar, I think that your simple example is probably not what you intended. Your (x,y) points are all defined on the straight line from (-10,-10) to (10,10). The Delaunay triangulation of these points (which is what griddata does) is not very interesting! Perhaps you wanted (x,y) defined on the 2D grid from (-10,-10) to (10,10), in which case you should follow the x = y ... line with, for example: x, y = meshgrid(x, y) (see numpy.meshgrid for further details). You may still obtain the same IndexError, and the traceback shows this is happening in the delaunay.Triangulation function call. The matplotlib delaunay package is not particularly robust, and can have problems handling regularly-spaced data points. The griddata documentation explains some of this, see http://matplotlib.org/api/mlab_api.html#matplotlib.mlab.griddata. To avoid the problem, the griddata documentation explains one possible way that uses the natgrid algorithm. A simpler solution that I often use is to add a very small amount of noise to my regularly-spaced (x,y) points using the numpy.random module. I can give more details if you wish. Ian -- Master Java SE, Java EE, Eclipse, Spring, Hibernate, JavaScript, jQuery and much more. Keep your Java skills current with LearnJavaNow - 200+ hours of step-by-step video tutorials by Java experts. SALE $49.99 this month only -- learn more at: http://p.sf.net/sfu/learnmore_122612 ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users