2009-12-09 12 views
17

Da alcuni esempi di Internet ho inserito il codice di prova qui sotto. Funziona!Come usare Matplotlib in Django?

... MA se ricarico la pagina, la torta si disegna con la stessa immagine. Alcune parti diventano più scure ogni volta che ricarico la pagina. Quando riavvio il server di sviluppo, viene resettato. Come faccio a disegnare correttamente con Matplotlib in Django? Sembra che ricorda alcuni disegni ...

Fonte views.py (lasciare collegamento urls.py ad esso):

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') 
    canvas.print_png(response) 
    return response 

Sto usando Django e Python 1.0.1 2.6.2 (Linux) .

risposta

24

È necessario rimuovere il parametro num da figure constructor e close quando si è finito.

import matplotlib.pyplot 

def test_matplotlib(request): 
    f = figure(figsize=(6,6)) 
    .... 
    matplotlib.pyplot.close(f) 

Rimuovendo il parametro num, eviterete utilizzando la stessa figura, allo stesso tempo. Questo potrebbe accadere se 2 browser richiedono l'immagine allo stesso tempo. Se questo non è un problema, un'altra possibile soluzione è utilizzare il metodo clear, ad esempio f.clear().

+0

Grazie mille! Funziona come desiderato! –

+0

Anche la spiegazione in [questo video] (https://youtu.be/ZmYPzESC5YY?t=5m8s) può essere utile. – J0ANMM

Problemi correlati