2009-12-09 16 views
17

İnternet'ten bazı örneklerden, aşağıda test kodunu yaptım. İşe yarıyor!Django'da Matplotlib nasıl kullanılır?

... Ama sayfayı yeniden yüklerseniz, pasta aynı görüntüye sahip olur. Sayfayı yeniden yüklediğimde bazı bölümler koyulaşıyor. Geliştirme sunucusunu yeniden başlattığımda, sıfırlanır. Django'da Matplotlib ile nasıl düzgün çizerim? bazı çizimler hatırlar gibi

Kaynak views.py (buna urls.py linki izin) ... görünüyor:

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 

Django 1.0.1 ve Python 2.6.2 kullanıyorum (Linux) .

cevap

24

num parametresini, figure constructor ve close ile tamamladığınızda, şekilden kaldırmanız gerekir. num parametresini kaldırarak

import matplotlib.pyplot 

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

, aynı anda aynı rakamı kullanmaktan kaçının edeceğiz. Bu, 2 tarayıcı aynı anda resmi isterse gerçekleşebilir. Bu bir sorun değilse, başka bir olası çözüm clear yöntemini, yani f.clear() kullanmaktır.

+0

Çok teşekkür ederim! İstendiği gibi çalışır! –

+0

[Bu video] 'daki açıklama (https://youtu.be/ZmYPzESC5YY?t=5m8s) da yardımcı olabilir. – J0ANMM