SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
(3)
Jun
Jul
Aug
(12)
Sep
(12)
Oct
(56)
Nov
(65)
Dec
(37)
2004 Jan
(59)
Feb
(78)
Mar
(153)
Apr
(205)
May
(184)
Jun
(123)
Jul
(171)
Aug
(156)
Sep
(190)
Oct
(120)
Nov
(154)
Dec
(223)
2005 Jan
(184)
Feb
(267)
Mar
(214)
Apr
(286)
May
(320)
Jun
(299)
Jul
(348)
Aug
(283)
Sep
(355)
Oct
(293)
Nov
(232)
Dec
(203)
2006 Jan
(352)
Feb
(358)
Mar
(403)
Apr
(313)
May
(165)
Jun
(281)
Jul
(316)
Aug
(228)
Sep
(279)
Oct
(243)
Nov
(315)
Dec
(345)
2007 Jan
(260)
Feb
(323)
Mar
(340)
Apr
(319)
May
(290)
Jun
(296)
Jul
(221)
Aug
(292)
Sep
(242)
Oct
(248)
Nov
(242)
Dec
(332)
2008 Jan
(312)
Feb
(359)
Mar
(454)
Apr
(287)
May
(340)
Jun
(450)
Jul
(403)
Aug
(324)
Sep
(349)
Oct
(385)
Nov
(363)
Dec
(437)
2009 Jan
(500)
Feb
(301)
Mar
(409)
Apr
(486)
May
(545)
Jun
(391)
Jul
(518)
Aug
(497)
Sep
(492)
Oct
(429)
Nov
(357)
Dec
(310)
2010 Jan
(371)
Feb
(657)
Mar
(519)
Apr
(432)
May
(312)
Jun
(416)
Jul
(477)
Aug
(386)
Sep
(419)
Oct
(435)
Nov
(320)
Dec
(202)
2011 Jan
(321)
Feb
(413)
Mar
(299)
Apr
(215)
May
(284)
Jun
(203)
Jul
(207)
Aug
(314)
Sep
(321)
Oct
(259)
Nov
(347)
Dec
(209)
2012 Jan
(322)
Feb
(414)
Mar
(377)
Apr
(179)
May
(173)
Jun
(234)
Jul
(295)
Aug
(239)
Sep
(276)
Oct
(355)
Nov
(144)
Dec
(108)
2013 Jan
(170)
Feb
(89)
Mar
(204)
Apr
(133)
May
(142)
Jun
(89)
Jul
(160)
Aug
(180)
Sep
(69)
Oct
(136)
Nov
(83)
Dec
(32)
2014 Jan
(71)
Feb
(90)
Mar
(161)
Apr
(117)
May
(78)
Jun
(94)
Jul
(60)
Aug
(83)
Sep
(102)
Oct
(132)
Nov
(154)
Dec
(96)
2015 Jan
(45)
Feb
(138)
Mar
(176)
Apr
(132)
May
(119)
Jun
(124)
Jul
(77)
Aug
(31)
Sep
(34)
Oct
(22)
Nov
(23)
Dec
(9)
2016 Jan
(26)
Feb
(17)
Mar
(10)
Apr
(8)
May
(4)
Jun
(8)
Jul
(6)
Aug
(5)
Sep
(9)
Oct
(4)
Nov
Dec
2017 Jan
(5)
Feb
(7)
Mar
(1)
Apr
(5)
May
Jun
(3)
Jul
(6)
Aug
(1)
Sep
Oct
(2)
Nov
(1)
Dec
2018 Jan
Feb
Mar
Apr
(1)
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2020 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2025 Jan
(1)
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S






1
(1)
2
3
(10)
4
(17)
5
(7)
6
(21)
7
(15)
8
(6)
9
(7)
10
(8)
11
(6)
12
(11)
13
(11)
14
(13)
15
(4)
16
(5)
17
(8)
18
(8)
19
(15)
20
(3)
21
(10)
22
(5)
23
(7)
24
(8)
25
(29)
26
(26)
27
(7)
28
(2)
29
(3)
30
(3)






Showing 6 results of 6

From: Barraclough, D. \(e. 414\) <dj...@qv...> - 2012年09月11日 20:57:13
 
I'm using matplotlib plots embedded in a wxpython application to display
a stream of data. The application works effectively but I have noticed
that memory usage rises substantially over time (if left long enough the
process can go from 50MB to near 1GB of RAM). After some
experimentation, I have tracked the problem down to the canvas.draw()
call needed to refresh my matplotlib plos. Thinking that the problem may
be due to how I coded up my plots I looked to see if the problem was
present in the examples given at
 
http://matplotlib.sourceforge.net/examples/user_interfaces
 
and found that the problem seem to be present in some the examples
posted there if I added a timer to cause the canvas draw to be
repeatedly performed. 
 
 
The example below is based on 
 
http://matplotlib.sourceforge.net/examples/user_interfaces/embedding_in_
wx2.html
 
and has been instrumented to report memory usage when running in
Windows. My tests indicate that working set memory rises by 11 to 12
Kbytes at each plot. 
 
Some what to my surprise, I found the same issue when I ran an even
simpler version on a linux mint virtual box running on my win7 system.
(I have not explored this much so somebody else might want to test
things on a non virtual linux box) I assume this implies that python is
probably keeping something alive that was expected to be automatically
cleaned up at each draw. I have made some effort to localize the problem
further but right now I don't have the necessary time to get heavily
into the inner workings of matplotlib or wxpython 
 
Has any body else seen this problem before, and if so, has any body a
work around that allows rapid replotting - I would guess that I could
periodically flush the figure and re build my plots but this would cause
periodic glitches in plotting? 
 
 
Dominic
 
 
System details
 
Win7 ultimate service pack1
Python 2.6.6 (but I've seen the problem with python2.5 and 2.7)
Matplotlib 1.1.1 (but also in earlier versions)
Wxpython 2.9.4.0 msw (classic) (put also on 2.8.12.0 unicode)
 
 
Example 
------------------------------------------------------------------------
-----------------------------------------------------------
import wxversion
wxversion.ensureMinimal('2.8')
 
from numpy import arange, sin, pi
 
import matplotlib
 
# uncomment the following to use wx rather than wxagg
#matplotlib.use('WX')
#from matplotlib.backends.backend_wx import FigureCanvasWx as
FigureCanvas
 
# comment out the following to use wx rather than wxagg
matplotlib.use('WXAgg')
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as
FigureCanvas
 
from matplotlib.backends.backend_wx import NavigationToolbar2Wx
 
from matplotlib.figure import Figure
import win32process
import wx
 
class CanvasFrame(wx.Frame):
 
 def __init__(self):
 wx.Frame.__init__(self,None,-1,
 'CanvasFrame',size=(550,350))
 
 #self.SetBackgroundColour(wx.NamedColor("WHITE")) # 2.9 does not
like
 
 self.figure = Figure()
 self.axes = self.figure.add_subplot(111)
 t = arange(0.0,3.0,0.01)
 s = sin(2*pi*t)
 
 self.axes.plot(t,s)
 self.canvas = FigureCanvas(self, -1, self.figure)
 
 self.sizer = wx.BoxSizer(wx.VERTICAL)
 self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
 self.SetSizer(self.sizer)
 self.Fit()
 
 self.add_toolbar() # comment this out for no toolbar
 self.timer = wx.Timer(self, -1)
 
 self.Bind(wx.EVT_TIMER, self.OnUpdate)
 self.delay = 200
 self.timer.Start(self.delay, oneShot = False)
 self.proc_id = win32process.GetCurrentProcess()
 adict = win32process.GetProcessMemoryInfo(self.proc_id)
 self.memory_old = adict["WorkingSetSize"]
 self.i = 0
 
 def add_toolbar(self):
 self.toolbar = NavigationToolbar2Wx(self.canvas)
 self.toolbar.Realize()
 if wx.Platform == '__WXMAC__':
 # Mac platform (OSX 10.3, MacPython) does not seem to cope
with
 # having a toolbar in a sizer. This work-around gets the
buttons
 # back, but at the expense of having the toolbar at the top
 self.SetToolBar(self.toolbar)
 else:
 # On Windows platform, default window size is incorrect, so
set
 # toolbar width to figure width.
 tw, th = self.toolbar.GetSizeTuple()
 fw, fh = self.canvas.GetSizeTuple()
 # By adding toolbar in sizer, we are able to put it at the
bottom
 # of the frame - so appearance is closer to GTK version.
 # As noted above, doesn't work for Mac.
 self.toolbar.SetSize(wx.Size(fw, th))
 self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)
 # update the axes menu on the toolbar
 self.toolbar.update()
 
 
 def OnUpdate(self, evt):
 self.OnPaint( evt)
 self.i +=1
 the_count =25
 if self.i %the_count ==0: 
 adict_now = win32process.GetProcessMemoryInfo(self.proc_id)
 memory_now = adict_now["WorkingSetSize"]
 delta = (memory_now - self.memory_old )/ (the_count *1024.0)
#convert to kbytes per update
 self.memory_old = memory_now
 print "memory now = %i delta = %f\n" %(memory_now, delta)
 
 def OnPaint(self, event):
 self.canvas.draw()
 
class App(wx.App):
 
 def OnInit(self):
 'Create the main window and insert the custom frame'
 frame = CanvasFrame()
 frame.Show(True)
 
 return True
 
app = App(0)
app.MainLoop()
From: Damon M. <dam...@gm...> - 2012年09月11日 15:49:31
On Tue, Sep 11, 2012 at 3:34 PM, Neal Becker <ndb...@gm...> wrote:
> OK, I've attached my sanitized example
>
ImportError: No module named pandas.
Can you provide an example that doesn't depend on pandas?
> Benjamin Root wrote:
>
>> On Tue, Sep 11, 2012 at 9:29 AM, Neal Becker
>> <ndb...@gm...> wrote:
>>
>>> I tried a scatterplot with legend(loc='best'), but the legend
>>> appears on the upper right, covering a data point. There is nothing
>>> anywhere
>>> in the graph on the upper left, which is where 'best' should go.
>>>
>>>
>> A small, self-contained example would be most useful. The logic for 'best'
>> isn't the greatest, but it should work in most cases. If you could provide
>> an example of where this blatantly breaks, it might uncover a bug.
>>
>> Cheers!
>> Ben Root
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
>
-- 
Damon McDougall
http://www.damon.is-a-geek.com
B2.39
Mathematics Institute
University of Warwick
Coventry
West Midlands
CV4 7AL
United Kingdom
From: Neal B. <ndb...@gm...> - 2012年09月11日 14:34:31
Attachments: sanitized.py
OK, I've attached my sanitized example
Benjamin Root wrote:
> On Tue, Sep 11, 2012 at 9:29 AM, Neal Becker
> <ndb...@gm...> wrote:
> 
>> I tried a scatterplot with legend(loc='best'), but the legend
>> appears on the upper right, covering a data point. There is nothing
>> anywhere
>> in the graph on the upper left, which is where 'best' should go.
>>
>>
> A small, self-contained example would be most useful. The logic for 'best'
> isn't the greatest, but it should work in most cases. If you could provide
> an example of where this blatantly breaks, it might uncover a bug.
> 
> Cheers!
> Ben Root
From: Benjamin R. <ben...@ou...> - 2012年09月11日 13:49:14
On Tue, Sep 11, 2012 at 9:29 AM, Neal Becker <ndb...@gm...> wrote:
> I tried a scatterplot with legend(loc='best'), but the legend
> appears on the upper right, covering a data point. There is nothing
> anywhere
> in the graph on the upper left, which is where 'best' should go.
>
>
A small, self-contained example would be most useful. The logic for 'best'
isn't the greatest, but it should work in most cases. If you could provide
an example of where this blatantly breaks, it might uncover a bug.
Cheers!
Ben Root
From: Neal B. <ndb...@gm...> - 2012年09月11日 13:30:25
I tried a scatterplot with legend(loc='best'), but the legend
appears on the upper right, covering a data point. There is nothing anywhere
in the graph on the upper left, which is where 'best' should go.
From: Daπid <dav...@gm...> - 2012年09月11日 13:00:48
On Sunday, September 9, 2012, Eric Firing wrote:
> Regarding the need to pre-allocate: yes, matlab is slicker in this
> regard, and every now and then there is discussion about implementing
> equivalent behavior in numpy, or in an add-on module.
>
Technically, you don ́t have to preallocate the memory, but every time you
expand your array, the whole of it will be copied to a new contiguous piece
of memory. This works, but it can be slow if you do it many times, or you
are handling big data.
Using a Python list is not much more flexible, but you could use carrays
(for chunked arrays), that are structures NumPyArrays-compatible (AFAIK)
that are stored non contiguosly in memory. Adding data only needs to move
one of those small pieces, instead of the whole array.

Showing 6 results of 6

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /