David Goldsmith wrote: > Hi! I'm trying to display a 10800 x 8100 pixel image w/ imshow using the > following code (adapted from a response to a previous post of mine): > > from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas > from matplotlib.figure import Figure > > fig = Figure(figsize=(36,27), > dpi=300, > frameon=False) > canvas = FigureCanvas(fig) > ax = fig.add_subplot(111, xticks=[], yticks=[]) > cmap = MPL.cm.get_cmap('prism_r') > ax.imshow(result, cmap=cmap) > canvas.print_figure('HiResHex') > > I get the following error report: > > Traceback (most recent call last): > File "Hex.py", line 208, in <module> > canvas.print_figure('HiResHex') > File "C:\python25\lib\site-packages\matplotlib\backend_bases.py", line > 1201, i > n print_figure > self.figure.canvas.draw() > File "C:\python25\lib\site-packages\matplotlib\backends\backend_agg.py", > line > 358, in draw > self.figure.draw(self.renderer) > File "C:\python25\lib\site-packages\matplotlib\figure.py", line 624, in draw > for a in self.axes: a.draw(renderer) > File "C:\python25\lib\site-packages\matplotlib\axes.py", line 1305, in draw > for im in self.images if im.get_visible()] > File "C:\python25\lib\site-packages\matplotlib\image.py", line 131, in > make_im > age > x = self.to_rgba(self._A, self._alpha) > File "C:\python25\lib\site-packages\matplotlib\cm.py", line 75, in to_rgba > x = self.norm(x) > File "C:\python25\lib\site-packages\matplotlib\colors.py", line 593, in > __call > __ > val = ma.asarray(value).astype(npy.float) > File "C:\python25\lib\site-packages\numpy\core\ma.py", line 1151, in astype > d = self._data.astype(tc) > MemoryError > > Is there some maximum number of pixels imshow can handle? Any other > suggestions?
David, It looks to me like you simply ran out of memory--this is not an imshow problem as such. Your array is about 1e8 elements, and as floats that would be close to a GB--just for that array alone. Do you really need all that resolution? If you do, you will probably have to get a much more capable machine. Otherwise, you need to knock down the size of that array before trying to plot or otherwise manipulate it. With respect to imshow, probably you can get it to handle larger images if you feed them in as NxMx4 numpy.uint8 RGBA arrays--but I doubt this is going to be enough, or the right approach, for your present situation. Eric > > Platform Details: MPL 0.91.2 (sorry, I didn't realize I was running such an > old version, maybe I just need to upgrade?), Python 2.5.2, Windows XP 2002 > SP3, 504MB physical RAM, 1294MB VM Page size (1000MB init., 5000MB max) > > Thanks! > > DG ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users