[Matplotlib-users] imshow memory consuption problem when using GTKAgg backend

2010-05-16 Thread Tomáš Faragó
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

2010-05-16 Thread Fabrice Silva
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?

2010-05-16 Thread Philipp K. Janert
 
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?

2010-05-16 Thread Philipp K. Janert

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?

2010-05-16 Thread Eric Firing
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?

2010-05-16 Thread Philipp K. Janert

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