2009-12-09 15 views
17

इंटरनेट से कुछ उदाहरणों से मैंने नीचे टेस्ट कोड बनाया है। यह काम करता हैं!Django में Matplotlib का उपयोग कैसे करें?

... लेकिन अगर मैं पृष्ठ को फिर से लोड करता हूं, तो पाई एक ही छवि के साथ स्वयं को आकर्षित करेगी। प्रत्येक बार जब मैं पृष्ठ को फिर से लोड करता हूं तो कुछ हिस्सों में गहरा हो जाता है। जब मैं विकास सर्वर को पुनरारंभ करता हूं, तो यह रीसेट हो जाता है। Django में Matplotlib के साथ मैं ठीक से कैसे आकर्षित करूं? ऐसा लगता है कि यह कुछ चित्र याद है की तरह ...

स्रोत views.py (यह करने के लिए urls.py लिंक करते हैं):

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 और 2.6.2 अजगर का उपयोग कर रहा (लिनक्स) ।

उत्तर

24

आपको figure constructor और close से num पैरामीटर को हटाने की आवश्यकता है जब आप इसके साथ काम करते हैं।

import matplotlib.pyplot 

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

num पैरामीटर निकालकर, आप एक ही समय में एक ही आंकड़ा उपयोग करने से बचें करेंगे। यह तब हो सकता है जब 2 ब्राउज़र एक ही समय में छवि का अनुरोध करते हैं। यदि यह कोई मुद्दा नहीं है, तो एक और संभावित समाधान clear विधि का उपयोग करना है, यानी f.clear()

+0

बहुत बहुत धन्यवाद! यह वांछित के रूप में काम करता है! –

+0

[इस वीडियो] में स्पष्टीकरण (https://youtu.be/ZmYPzESC5YY?t=5m8s) सहायक भी हो सकता है। – J0ANMM

संबंधित मुद्दे