Because the image is so large, and matplotlib carries out various operations on the image (scaling, resampling, etc), it uses a lot of memory. This is one area where a specialized display program will be more efficient. If you need to use matplotlib, decide whether you really only want to display a subsection, or only need a lower resolution version (e.g., boxcar smooth and subsample) before displaying. I've found that image sizes well over 1kx1k can take some time to display, and those that are much larger can cause you to run out of memory. At least, that's what I think is happening.
Perry On Jun 30, 2009, at 7:20 PM, Tommy Grav wrote: > I am trying to use imshow to plot some semi-large fits images. > Here is the code: > > from math import * > import numpy as np > from matplotlib import pyplot as plt > from matplotlib import cm as cm > import pyfits > > cat = "/Volumes/Sweden/PS1SC/Data/PS20090603-3/MD09/skycell.092/" > fname = "o4985g0263o.warp.MD09.skycell.092" > > hdu = pyfits.open(cat+fname+".fits") > print hdu.info() > img = hdu[1].data.astype("int") > > plt.figure(figsize=[12,12]) > plt.imshow(img,cmap=cm.cool) > plt.savefig("test.png") > > Which gives the result: > > Filename: /Volumes/Sweden/PS1SC/Data/PS20090603-3/MD09/skycell.092/ > o4985g0263o.warp.MD09.skycell.092.fits > No. Name Type Cards Dimensions Format > 0 PRIMARY PrimaryHDU 6 () int16 > 1 CompImageHDU 101 (6000, 6000) float32 > None > Python(23117,0xa04f2720) malloc: *** mmap(size=1152000000) failed > (error code=12) > *** error: can't allocate region > *** set a breakpoint in malloc_error_break to debug > Traceback (most recent call last): > File "quick_look.py", line 16, in <module> > plt.savefig("test.png") > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/pyplot.py", line 345, in savefig > return fig.savefig(*args, **kwargs) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/figure.py", line 990, in savefig > self.canvas.print_figure(*args, **kwargs) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/backend_bases.py", line 1419, in > print_figure > **kwargs) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/backends/backend_agg.py", line 323, > in print_png > FigureCanvasAgg.draw(self) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/backends/backend_agg.py", line 279, > in draw > self.figure.draw(self.renderer) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/figure.py", line 772, in draw > for a in self.axes: a.draw(renderer) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/axes.py", line 1545, in draw > im.draw(renderer) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/image.py", line 233, in draw > im = self.make_image(renderer.get_image_magnification()) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/image.py", line 180, in make_image > x = self.to_rgba(self._A, self._alpha) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/cm.py", line 79, in to_rgba > x = self.cmap(x, alpha=alpha, bytes=bytes) > File "/Library/Frameworks/Python.framework/Versions/2.5/lib/ > python2.5/site-packages/matplotlib/colors.py", line 501, in __call__ > rgba = np.empty(shape=xa.shape+(4,), dtype=lut.dtype) > MemoryError > > I found the earlier thread of > http://www.mail-archive.com/matplotlib-users@lists.sourceforge.net/msg11216.html > but that didn't seem to produce any fixes or good explanations. > > I am on a Mac Pro Intel machine running 10.5.7 and > [Heimdall:tgrav ~/Work/myCode/Python/pyPS1SC]> python > ActivePython 2.5.4.3 (ActiveState Software Inc.) based on > Python 2.5.4 (r254:67916, Jan 20 2009, 14:11:42) > [GCC 4.0.1 (Apple Computer, Inc. build 5250)] on darwin > Type "help", "copyright", "credits" or "license" for more information. >>>> import numpy >>>> numpy.__version__ > '1.3.0rc2' >>>> import pyfits >>>> pyfits.__version__ > '2.1.1dev462' >>>> import matplotlib >>>> matplotlib.__version__ > '0.98.5.2' >>>> > > Cheers > Tommy > > > ------------------------------------------------------------------------------ > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users ------------------------------------------------------------------------------ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users