How to use Matplotlib in Django?

Posted on

Question :

How to use Matplotlib in Django?

From some examples from the Internet I made the test code below. It works!

… BUT if I reload the page, the pie will draw itself with the same image. Some parts get darker every time I reload the page. When I restart the the development server, it is reset. How do I draw properly with Matplotlib in Django? It looks like it remembers some drawings…

Source (let link to it):

from pylab import figure, axes, pie, title
from matplotlib.backends.backend_agg import FigureCanvasAgg

def test_matplotlib(request):
    f = figure(1, figsize=(6,6))
    ax = axes([0.1, 0.1, 0.8, 0.8])
    labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
    fracs = [15,30,45, 10]
    explode=(0, 0.05, 0, 0)
    pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
    title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})

    canvas = FigureCanvasAgg(f)    
    response = HttpResponse(content_type='image/png')
    return response

I am using Django 1.0.1 and Python 2.6.2 (Linux).

Asked By: Jack Ha


Answer #1:

You need to remove the num parameter from the figure constructor and close the figure when you’re done with it.

import matplotlib.pyplot

def test_matplotlib(request):
    f = figure(figsize=(6,6))

By removing the num parameter, you’ll avoid using the same figure at the same time. This could happen if 2 browsers request the image at the same time. If this is not an issue, another possible solution is to use the clear method, i.e. f.clear().

Answered By: Cristian Ciupitu

Answer #2: picture which created by matplotlib
for example:plt.savefig(‘./app1/static/visualize.png’)
2.use the picture in your html code
for example:

about django how to use static variable(like picture and js file) you can refer to django document

Answered By: chenxuZhu

Leave a Reply

Your email address will not be published.