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

Showing 2 results of 2

From: Hans B. <han...@ar...> - 2012年11月01日 20:53:09
Hello everybody,
I'm building a small Tkinter GUI using matplotlib, in which I have to 
change/update plots quite often depending on user input (with different 
contents & sizes, in different places in the GUI, etc.; but always only 
one figure at a time).
As a first resort, I regenerated the figures with plt.figure(...) whenever 
necessary; unfortunately, the program happily accumulated memory with 
every new figure until the computer would no longer cooperate in a timely 
fashion. The following minimal script should demonstrate the tendency:
--- start of script ---
import math
 from Tkinter import Tk, Button
import Tkconstants
 from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
 from matplotlib.figure import Figure
 from matplotlib import pyplot as plt
def replot():
 global globalCanvas, globalFigure, plotShift
 # any variety of clean-up calls
 if globalFigure is not None:
 plt.close()
 globalCanvas.get_tk_widget().destroy()
 globalFigure.clf()
 globalFigure = Figure(dpi=120, figsize=(4, 4))
 globalCanvas = FigureCanvasTkAgg(globalFigure, master=root)
 globalCanvas.get_tk_widget().grid(row=0, column=1)
 xVals = xrange(100)
 ax = globalFigure.add_subplot(111)
 ax.plot(xVals, [math.sin(x + plotShift) for x in xVals])
 plotShift += 10
# MAIN
globalCanvas = None
globalFigure = None
plotShift = 0 # just to see the plot change
root = Tk()
draw_button = Button(root, text="Replot", command=replot)
draw_button.grid(row=0, column=0, sticky=Tkconstants.N)
root.mainloop()
--- end of script ---
I have tried various clean-up calls, but the effect (of memory piling up) 
is always the same. Using objgraph (http://mg.pov.lt/objgraph/), I took a 
look at object counts by adding the following snippet at the end of the 
"replot" call:
--- start of insertion ---
 import gc
 import objgraph
 gc.collect()
 print "---"
 for c in ('FigureCanvasTkAgg', 'Figure'):
 print "{}\t{}".format(len(objgraph.by_type(c)), c)
--- end of insertion ---
The output shows that the total number of both Figures and 
FigureCanvasTkAggs increases constantly (i.e., one each after the first 
call, then two each, etc.), whereas I had expected that old ones get 
released, and that the count remains at one each.
Now I am wondering if I am missing some detail, e.g., some other clean-up 
procedure? Or should this work & could be a memory leak in matplotlib or 
Tkinter? And/or is this approach (of generating a new figure every time) 
not recommended in the first place? I tried reusing the figure, but some 
aspects like changing the layout in the GUI and applying new size and dpi 
then proved tricky in their own ways.
Many thanks in advance,
Hans
Hello Daryl,
On Wed, Oct 31, 2012 at 9:48 PM, Daryl Herzmann <ak...@gm...> wrote:
> Howdy,
>
> I built basemap 1.0.5 and matplotlib 1.2.0rc3 via the simple command 'python
> setup.py bdist_rpm' without an error that I can tell. When I attempt to
> install them, I get a conflict between the two. For example:
>
> file /usr/lib64/python2.6/site-packages/mpl_toolkits/__init__.pyc from
> install of basemap-1.0.5-1.x86_64 conflicts with file from package
> matplotlib-1.2.0rc3-1.x86_64
> file /usr/lib64/python2.6/site-packages/mpl_toolkits/__init__.pyo from
> install of basemap-1.0.5-1.x86_64 conflicts with file from package
> matplotlib-1.2.0rc3-1.x86_64
>
> Working around this error is easy with some rpm flags, but was curious what
> the proper solution for this situation is?
In Debian we're dealing with this situation letting 'matplotlib'
package owning the "mpl_toolkits" namespace (so only matplotlib will
install the __init__.py file in that directory) and basemap will
install stuff in "mpl_toolkits/basemap" directory and depending on
matplotlib (it requires to NOT install mpl_toolkits/__init__.py file
when install basemap, by either remote it when creating the package or
similar solution).
This way matplotlib package will create the namespace for all the
other packages to install modules in it, and avoiding conflicts like
the one you described.
HTH,
-- 
Sandro Tosi (aka morph, morpheus, matrixhasu)
My website: http://matrixhasu.altervista.org/
Me at Debian: http://wiki.debian.org/SandroTosi

Showing 2 results of 2

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 によって変換されたページ (->オリジナル) /