On Linux, I only see about an extra 24kb being used when the canvas is added to a window vs. not adding it (i.e. commenting out the window.add(canvas) line).
In general, here's the memory usage to be expected from imshow (if it's a floating-point, not-rgb(a) array as you have here): The original data: 4-bytes-per-pixel for float32 or 8-bytes-per-pixel for float64 (in your example the array is float64). Intermediate float data: *if* the original is not float64, then an intermediate float64 is created (not the case here) The colorized data: 4-bytes-per-pixel at original array size The sized data: 4-bytes-per-pixel at the scaled figure size I hope I'm not forgetting anything, but the point is that to support high-speed rendering of plots, the memory usage is much greater than the data itself. If your data is truly large, the usual technique is to decimate or downsample it before passing it to matplotlib, as you're not going to see more data points than pixels on your display anyway. Mike Tomáš Faragó wrote: > Hello, > I am writing a GUI using GTK+ library. I have a question about axes class > imshow method memory consumtion. If I pass the imshow an array, the resulting > memory consuption is approximatelly 46 times greater than the array size. If > I do not add the canvas to a window (in a code below), the memory consuption > is "only" 8 times greater. Any tips on how to reduce the memory consuption > would be very appreciated and any explanation of how much memmory imshow > allocates too. Configuration and script are below. > > os: Windowx XP > matplotlib version: 0.99.1 > downloaded from: sourceforge.net > > script: > from matplotlib.figure import Figure > from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg > from pylab import rand > import gtk > > window = gtk.Window() > window.connect("destroy", gtk.main_quit) > > figure = Figure(figsize=(8,6), dpi=72) > canvas = FigureCanvasGTKAgg(figure) > axes = figure.add_subplot(111) > > window.add(canvas) > > axes.imshow(rand(1024,1024)) > canvas.draw() > window.show_all() > > gtk.main() > > verbose-helpful output: > $HOME=C:\Documents and Settings\Sensej > CONFIGDIR=C:\Documents and Settings\Sensej\.matplotlib > matplotlib data path C:\Python26\lib\site-packages\matplotlib\mpl-data > loaded rc file C:\Python26\lib\site-packages\matplotlib\mpl-data\matplotlibrc > matplotlib version 0.99.1 > verbose.level helpful > interactive is False > units is False > platform is win32 > Using fontManager instance from C:\Documents and > Settings\Sensej\.matplotlib\fontList.cache > backend GTKAgg version 2.12.1 > findfont: Matching > :family=sans-serif:style=normal:variant=normal:weight=normal:stretch=normal:size=medium > to Bitstream Vera Sans > (C:\Python26\lib\site-packages\matplotlib\mpl-data\fonts\ttf\Vera.ttf) with > score of 0.000000 > > Thank you, > Tomas. > > ------------------------------------------------------------------------------ > > _______________________________________________ > Matplotlib-users mailing list > Matplotlib-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > -- Michael Droettboom Science Software Branch Operations and Engineering Division Space Telescope Science Institute Operated by AURA for NASA ------------------------------------------------------------------------------ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users