On Jun 25, 2:55 am, Jean-Paul Calderone <exar...@divmod.com> wrote: > 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
Thank you Jean-Paul -- http://mail.python.org/mailman/listinfo/python-list