On Wed, 24 Jun 2009 11:38:02 -0700 (PDT), koranthala <koranth...@gmail.com> 
wrote:
Hi,
I am using Matplotlib with Django to display charts on the web page.
I am facing an odd problem in that, everytime I do a refresh on the
web page, the image darkens - and the text becomes little unreadable.
5/6 refreshes later, the text becomes completely unreadable.
Since I am using Django test server, the same process is being used.
i.e. every refresh does not create a new process. When I tried killing
the process, the image again cleared.
So I think it is sort of memory leak or a saved value which is messing
up something.
But I cannot seem to find the issue at all.

The code is as follows -

import pylab
from cStringIO import StringIO

def print_pie_chart(request):
   labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
   data = [15,30,45, 10]
   pylab.figure(1, figsize=(2,2))
   ax = pylab.axes([0.1, 0.1, 0.8, 0.8])
   pylab.pie(data, explode=None, labels=labels, autopct='%1.1f%%',
shadow=True)
   out = StringIO()
   pylab.savefig(out, format="PNG")
   out.seek(0)
   response = HttpResponse()
   response['Content-Type'] = 'image/png'
   response.write(out.read())
   return response

Can anyone help me out here?


Your code redraws over the same graph over and over again.  You need to
create a new graph each time you want to draw something new.  It took me
ages (and help) to figure out how the non-global APIs in matplotlib.

Here's an example:

 from matplotlib.figure import Figure
 from matplotlib.axes import Axes
 from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as 
FigureCanvas

 fig = Figure(figsize=(9, 9), dpi=100)
 axe = Axes(fig, (0, 0, 1.0, 1.0))
 axe.pie(range(5))
 fig.add_axes(axe)

 canvas = FigureCanvas(fig)
 canvas.set_size_request(640, 480)

 fig.savefig("foo.png")

Hope this helps,
Jean-Paul
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to