22

インターネットからのいくつかの例から、以下のテスト コードを作成しました。できます!

...しかし、ページをリロードすると、パイは同じ画像で描画されます。ページをリロードするたびに、一部の部分が暗くなります。開発サーバーを再起動すると、リセットされます。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 と Python 2.6.2 (Linux) を使用しています。

4

2 に答える 2

28

Figure コンストラクターnumからパラメーターを削除し、操作が完了したら Figureを閉じる必要があります。

import matplotlib.pyplot

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

パラメータを削除することnumで、同じ図を同時に使用することを回避できます。これは、2 つのブラウザーが同時に画像を要求した場合に発生する可能性があります。これが問題にならない場合、考えられる別の解決策は、clearメソッドを使用することf.clear()です。

于 2009-12-09T15:40:58.780 に答える