## Re: [Matplotlib-users] Speeding up pcolor plot

 Re: [Matplotlib-users] Speeding up pcolor plot From: Tony Yu - 2011-12-20 18:10:51 Attachments: Message as HTML ```On Tue, Dec 20, 2011 at 9:22 AM, Brad Malone wrote: > HI Paul, > > Thanks. I didn't realize it was that simple (appears that doing this > essentially plots everything against integers in x and y). This will be a > good backup plan if I can't get pcolor to work, although as you say, I'll > have to fiddle around some with the axis formatters and such I suppose to > get a good final plot out of this. > > Best, > Brad > > On Tue, Dec 20, 2011 at 12:12 AM, Paul Ivanov wrote: > >> Hey again, Brad, >> >> Brad Malone, on 2011-12-19 23:44, wrote: >> > Hi, I am plotting a grid with pcolor. Below I've got a 1000x1000 grid. >> > >> > xi=linspace(-0.1,x[-1]+2,1000) >> > > yi=linspace(-0.1,maxfreq+10,1000) >> > > print 'Calling griddata...' >> > > zi=griddata(x,y,z,xi,yi,interp='nn') >> > > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) >> ... >> > How could I modify my above data (which is in xi,yi,and zi) to >> > work with imshow (which seems to take 1 argument for data). >> >> Try either: >> >> plt.matshow(zi,cmap=plt.cm.hot) >> >> or >> >> plt.imshow(zi,cmap=plt.cm.hot) >> >> The first should be the quickest - it doesn't do any >> fancy interpolation, and actually just passes some arguments to >> the second. Using imshow directly, however, allows you to set a >> different type of interpolation, should you desire it. If >> you want xi and yi to be accurately reflect in the plot, you >> might have to play around with changing the axis formatters >> (though there might be an easier way of doing that, which escapes >> me right now) >> >> best, >> -- >> Paul Ivanov >> > You may also want to try: plt.pcolormesh(xi,yi,zi,cmap=plt.cm.hot) If I remember correctly, pcolormesh is faster but a bit more restrictive. (I think it's slower than matshow and imshow). -Tony P.S. I never knew about matshow; thanks Paul! ```

 [Matplotlib-users] Speeding up pcolor plot From: Brad Malone - 2011-12-20 07:44:25 Attachments: Message as HTML ```Hi, I am plotting a grid with pcolor. Below I've got a 1000x1000 grid. xi=linspace(-0.1,x[-1]+2,1000) > yi=linspace(-0.1,maxfreq+10,1000) > print 'Calling griddata...' > zi=griddata(x,y,z,xi,yi,interp='nn') > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) I am able to plot this on my computer, but it's very slow and monitoring 'top' while python is running shows it using up quite a bit of memory. This data set that I'm currently using is only about 1/10 of what I eventually want to plot. While I may be able to drop the resolution to some degree, I'd like to be able to speed this up if possible. Google searches reveal different people talking about imshow and pcolormesh being faster than pcolor. Is this true? How could I modify my above data (which is in xi,yi,and zi) to work with imshow (which seems to take 1 argument for data). Thanks for the help. Brad ```
 Re: [Matplotlib-users] Speeding up pcolor plot From: Paul Ivanov - 2011-12-20 08:13:03 Attachments: signature.asc ```Hey again, Brad, Brad Malone, on 2011-12-19 23:44, wrote: > Hi, I am plotting a grid with pcolor. Below I've got a 1000x1000 grid. > > xi=linspace(-0.1,x[-1]+2,1000) > > yi=linspace(-0.1,maxfreq+10,1000) > > print 'Calling griddata...' > > zi=griddata(x,y,z,xi,yi,interp='nn') > > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) ... > How could I modify my above data (which is in xi,yi,and zi) to > work with imshow (which seems to take 1 argument for data). Try either: plt.matshow(zi,cmap=plt.cm.hot) or plt.imshow(zi,cmap=plt.cm.hot) The first should be the quickest - it doesn't do any fancy interpolation, and actually just passes some arguments to the second. Using imshow directly, however, allows you to set a different type of interpolation, should you desire it. If you want xi and yi to be accurately reflect in the plot, you might have to play around with changing the axis formatters (though there might be an easier way of doing that, which escapes me right now) best, -- Paul Ivanov 314 address only used for lists, off-list direct email at: http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7 ```
 Re: [Matplotlib-users] Speeding up pcolor plot From: Brad Malone - 2011-12-20 17:22:53 Attachments: Message as HTML ```HI Paul, Thanks. I didn't realize it was that simple (appears that doing this essentially plots everything against integers in x and y). This will be a good backup plan if I can't get pcolor to work, although as you say, I'll have to fiddle around some with the axis formatters and such I suppose to get a good final plot out of this. Best, Brad On Tue, Dec 20, 2011 at 12:12 AM, Paul Ivanov wrote: > Hey again, Brad, > > Brad Malone, on 2011-12-19 23:44, wrote: > > Hi, I am plotting a grid with pcolor. Below I've got a 1000x1000 grid. > > > > xi=linspace(-0.1,x[-1]+2,1000) > > > yi=linspace(-0.1,maxfreq+10,1000) > > > print 'Calling griddata...' > > > zi=griddata(x,y,z,xi,yi,interp='nn') > > > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) > ... > > How could I modify my above data (which is in xi,yi,and zi) to > > work with imshow (which seems to take 1 argument for data). > > Try either: > > plt.matshow(zi,cmap=plt.cm.hot) > > or > > plt.imshow(zi,cmap=plt.cm.hot) > > The first should be the quickest - it doesn't do any > fancy interpolation, and actually just passes some arguments to > the second. Using imshow directly, however, allows you to set a > different type of interpolation, should you desire it. If > you want xi and yi to be accurately reflect in the plot, you > might have to play around with changing the axis formatters > (though there might be an easier way of doing that, which escapes > me right now) > > best, > -- > Paul Ivanov > 314 address only used for lists, off-list direct email at: > http://pirsquared.org | GPG/PGP key id: 0x0F3E28F7 > > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v1.4.10 (GNU/Linux) > > iEYEARECAAYFAk7wQ30ACgkQe+cmRQ8+KPdN8gCfY3SlI7F5zoXVrDL86VRyq3pC > SwwAn2bc6MBQjasKVxVzrvVRxaPJKiUP > =NmWr > -----END PGP SIGNATURE----- > > ```
 Re: [Matplotlib-users] Speeding up pcolor plot From: Tony Yu - 2011-12-20 18:10:51 Attachments: Message as HTML ```On Tue, Dec 20, 2011 at 9:22 AM, Brad Malone wrote: > HI Paul, > > Thanks. I didn't realize it was that simple (appears that doing this > essentially plots everything against integers in x and y). This will be a > good backup plan if I can't get pcolor to work, although as you say, I'll > have to fiddle around some with the axis formatters and such I suppose to > get a good final plot out of this. > > Best, > Brad > > On Tue, Dec 20, 2011 at 12:12 AM, Paul Ivanov wrote: > >> Hey again, Brad, >> >> Brad Malone, on 2011-12-19 23:44, wrote: >> > Hi, I am plotting a grid with pcolor. Below I've got a 1000x1000 grid. >> > >> > xi=linspace(-0.1,x[-1]+2,1000) >> > > yi=linspace(-0.1,maxfreq+10,1000) >> > > print 'Calling griddata...' >> > > zi=griddata(x,y,z,xi,yi,interp='nn') >> > > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) >> ... >> > How could I modify my above data (which is in xi,yi,and zi) to >> > work with imshow (which seems to take 1 argument for data). >> >> Try either: >> >> plt.matshow(zi,cmap=plt.cm.hot) >> >> or >> >> plt.imshow(zi,cmap=plt.cm.hot) >> >> The first should be the quickest - it doesn't do any >> fancy interpolation, and actually just passes some arguments to >> the second. Using imshow directly, however, allows you to set a >> different type of interpolation, should you desire it. If >> you want xi and yi to be accurately reflect in the plot, you >> might have to play around with changing the axis formatters >> (though there might be an easier way of doing that, which escapes >> me right now) >> >> best, >> -- >> Paul Ivanov >> > You may also want to try: plt.pcolormesh(xi,yi,zi,cmap=plt.cm.hot) If I remember correctly, pcolormesh is faster but a bit more restrictive. (I think it's slower than matshow and imshow). -Tony P.S. I never knew about matshow; thanks Paul! ```
 Re: [Matplotlib-users] Speeding up pcolor plot From: Brad Malone - 2011-12-20 20:48:07 Attachments: Message as HTML ```Tony, Thanks for the pcolormesh suggestion! It is quite a bit faster than pcolor for me (maybe 50-100x faster)! Best, Brad On Tue, Dec 20, 2011 at 10:10 AM, Tony Yu wrote: > > > On Tue, Dec 20, 2011 at 9:22 AM, Brad Malone wrote: > >> HI Paul, >> >> Thanks. I didn't realize it was that simple (appears that doing this >> essentially plots everything against integers in x and y). This will be a >> good backup plan if I can't get pcolor to work, although as you say, I'll >> have to fiddle around some with the axis formatters and such I suppose to >> get a good final plot out of this. >> >> Best, >> Brad >> >> On Tue, Dec 20, 2011 at 12:12 AM, Paul Ivanov wrote: >> >>> Hey again, Brad, >>> >>> Brad Malone, on 2011-12-19 23:44, wrote: >>> > Hi, I am plotting a grid with pcolor. Below I've got a 1000x1000 grid. >>> > >>> > xi=linspace(-0.1,x[-1]+2,1000) >>> > > yi=linspace(-0.1,maxfreq+10,1000) >>> > > print 'Calling griddata...' >>> > > zi=griddata(x,y,z,xi,yi,interp='nn') >>> > > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) >>> ... >>> > How could I modify my above data (which is in xi,yi,and zi) to >>> > work with imshow (which seems to take 1 argument for data). >>> >>> Try either: >>> >>> plt.matshow(zi,cmap=plt.cm.hot) >>> >>> or >>> >>> plt.imshow(zi,cmap=plt.cm.hot) >>> >>> The first should be the quickest - it doesn't do any >>> fancy interpolation, and actually just passes some arguments to >>> the second. Using imshow directly, however, allows you to set a >>> different type of interpolation, should you desire it. If >>> you want xi and yi to be accurately reflect in the plot, you >>> might have to play around with changing the axis formatters >>> (though there might be an easier way of doing that, which escapes >>> me right now) >>> >>> best, >>> -- >>> Paul Ivanov >>> >> > You may also want to try: > > plt.pcolormesh(xi,yi,zi,cmap=plt.cm.hot) > > If I remember correctly, pcolormesh is faster but a bit more restrictive. > (I think it's slower than matshow and imshow). > > -Tony > > P.S. I never knew about matshow; thanks Paul! > ```
 Re: [Matplotlib-users] Speeding up pcolor plot From: Eric Firing - 2011-12-21 00:11:15 ```On 12/20/2011 10:48 AM, Brad Malone wrote: > Tony, > > Thanks for the pcolormesh suggestion! It is quite a bit faster than > pcolor for me (maybe 50-100x faster)! There is also the Axes.pcolorfast() method. It has no pylab wrapper, and it is fussier than the others about its input arguments, but it uses the fastest method that the input grid permits. In your case it would be the speed of imshow, which is faster than pcolormesh. http://matplotlib.sourceforge.net/api/axes_api.html#matplotlib.axes.Axes.pcolorfast Note that like pcolor and pcolormesh its grid is based on the specification of the boundaries, not the centers, but unlike pcolormesh and pcolor it will not automatically chop off a row and a column of the 2-D color array to be plotted if you give it a grid with the same dimensions as the color array. Eric > > Best, > Brad > > On Tue, Dec 20, 2011 at 10:10 AM, Tony Yu > wrote: > > > > On Tue, Dec 20, 2011 at 9:22 AM, Brad Malone > wrote: > > HI Paul, > > Thanks. I didn't realize it was that simple (appears that doing > this essentially plots everything against integers in x and y). > This will be a good backup plan if I can't get pcolor to work, > although as you say, I'll have to fiddle around some with the > axis formatters and such I suppose to get a good final plot out > of this. > > Best, > Brad > > On Tue, Dec 20, 2011 at 12:12 AM, Paul Ivanov > > wrote: > > Hey again, Brad, > > Brad Malone, on 2011-12-19 23:44, wrote: > > Hi, I am plotting a grid with pcolor. Below I've got a > 1000x1000 grid. > > > > xi=linspace(-0.1,x[-1]+2,1000) > > > yi=linspace(-0.1,maxfreq+10,1000) > > > print 'Calling griddata...' > > > zi=griddata(x,y,z,xi,yi,interp='nn') > > > plt.pcolor(xi,yi,zi,cmap=plt.cm.hot) > ... > > How could I modify my above data (which is in xi,yi,and > zi) to > > work with imshow (which seems to take 1 argument for data). > > Try either: > > plt.matshow(zi,cmap=plt.cm.hot) > > or > > plt.imshow(zi,cmap=plt.cm.hot) > > The first should be the quickest - it doesn't do any > fancy interpolation, and actually just passes some arguments to > the second. Using imshow directly, however, allows you to set a > different type of interpolation, should you desire it. If > you want xi and yi to be accurately reflect in the plot, you > might have to play around with changing the axis formatters > (though there might be an easier way of doing that, which > escapes > me right now) > > best, > -- > Paul Ivanov > > > You may also want to try: > > plt.pcolormesh(xi,yi,zi,cmap=plt.cm.hot) > > If I remember correctly, pcolormesh is faster but a bit more > restrictive. (I think it's slower than matshow and imshow). > > -Tony > > P.S. I never knew about matshow; thanks Paul! > > > > > ------------------------------------------------------------------------------ > Write once. Port to many. > Get the SDK and tools to simplify cross-platform app development. Create > new or port existing apps to sell to consumers worldwide. Explore the > Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join > http://p.sf.net/sfu/intel-appdev > > > > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users ```