[Matplotlib-users] imshow memory consuption problem when using GTKAgg backend
Hello, I am writing a GUI using GTK+ library. I have a question about axes class imshow method memory consumption. If I pass the imshow an array, the resulting memory consuption is approximatelly 40 times greater than the array size. If I do not add the canvas to a window (in a code below), the memory consuption is as expected. Any tips on how to reduce the memory consuption would be very appreciated. 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.00 Thank you, Tomas. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Matplotlib crashes on mouse event
FIY, with the help of Sylvestre Ledru (debian atlas maintainer), the problem was solved installing libatlas3g-sse*. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] How to remove an element from a graph?
Assume I am running an interactive session, using ipython -pylab and have added a bunch of curves x = linspace(0, 10, 100 ) plot( x, sin(x) ) plot( x, cos(x) ) and also added a text label text( 1, 1, Hello ) But now I decide that I don't want the text anymore. What's the best way to remove it from the graph? (Because the graph is complicated I don't just want to clf() and start all over - I just want to remove that one element.) What I have found is that if I save the object created, I can invoke its remove() function: t =text( 2, 1, Hello again ) t.remove() draw() Is this the best way to do this, or is there another way (or one that does not require an explicit draw()?). Also, what if I have failed to save the text instance - do I have to walk the object tree using findobj()? Thanks! Best, Ph. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] plot() resets limits?
Let's say I am running an interactive session (ipython -pylab), and now issue the following commands: x = linspace(0, 10, 100 ) plot( x, sin(x) ) ylim( -2, 2 ) plot( x, cos(x) ) Then the second plot command seems to reset the plot limits to [-1,1] - which makes sense for the figure, but is not what I requested. Is this behavior intended? It seems odd to me, since generally matplotlib seems to retain state that has between invocations of plot(). Best, Ph. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] plot() resets limits?
On 05/16/2010 10:19 AM, Philipp K. Janert wrote: Let's say I am running an interactive session (ipython -pylab), and now issue the following commands: x = linspace(0, 10, 100 ) plot( x, sin(x) ) ylim( -2, 2 ) plot( x, cos(x) ) Then the second plot command seems to reset the plot limits to [-1,1] - which makes sense for the figure, but is not what I requested. Is this behavior intended? It seems odd to me, since generally matplotlib seems to retain state that has between invocations of plot(). Good question. The control of autoscaling has a somewhat clunky interface via Axes methods, and via the plot function. Your two options are to follow the ylim call with the ugly gca().set_autoscaley_on(False) or to add a kwarg to all subsequent plot calls: plot(x, cos(x), scaley=False) A possible mpl improvement would be to add a kwarg to the pyplot.ylim and xlim functions, e.g. ylim(-2, 2, keep=True) Calling the kwarg hold would read better to my eye, but would conflict with the use of hold to mean keep all prior plot elements. Maybe there is a better name, e.g. setting auto=False to mean don't autoscale this on the next plot command. Or save=True. I suspect we would have to leave the default behavior as it is for continuity and backwards compatibility, although I think that changing it would be an improvement overall. Eric -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] plot() resets limits?
Thanks, that was helpful. On Sunday 16 May 2010 02:23:02 pm Eric Firing wrote: On 05/16/2010 10:19 AM, Philipp K. Janert wrote: Let's say I am running an interactive session (ipython -pylab), and now issue the following commands: x = linspace(0, 10, 100 ) plot( x, sin(x) ) ylim( -2, 2 ) plot( x, cos(x) ) Then the second plot command seems to reset the plot limits to [-1,1] - which makes sense for the figure, but is not what I requested. Is this behavior intended? It seems odd to me, since generally matplotlib seems to retain state that has between invocations of plot(). Good question. The control of autoscaling has a somewhat clunky interface via Axes methods, and via the plot function. Your two options are to follow the ylim call with the ugly gca().set_autoscaley_on(False) or to add a kwarg to all subsequent plot calls: plot(x, cos(x), scaley=False) A possible mpl improvement would be to add a kwarg to the pyplot.ylim and xlim functions, e.g. ylim(-2, 2, keep=True) Calling the kwarg hold would read better to my eye, but would conflict with the use of hold to mean keep all prior plot elements. Maybe there is a better name, e.g. setting auto=False to mean don't autoscale this on the next plot command. Or save=True. I suspect we would have to leave the default behavior as it is for continuity and backwards compatibility, although I think that changing it would be an improvement overall. Eric --- --- ___ 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