質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

491閲覧

Djangoとmatplotlib

kassymoto

総合スコア13

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/07/23 08:58

編集2018/07/24 17:16

Djangoにて家計簿を実装しているのですが、
グラフを描画→画像で保存→HTMLで表示
という動作を数回行うと、下記のエラーが発生してしまいます。
グラフ部分を除外するとエラーが発生することはないので、グラフ部のどこかが悪いとは思うのですが、調べてみても解決策が見つかりません
##エラー
Exception ignored in: <bound method Image.del of <tkinter.PhotoImage object at 0x0000020B28F3F550>>
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter_init_.py", line 3501, in del
self.tk.call('image', 'delete', self.name)
RuntimeError: main thread is not in main loop
Exception ignored in: <bound method Image.del of <tkinter.PhotoImage object at 0x0000020B28F3FC18>>
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter_init_.py", line 3501, in del
self.tk.call('image', 'delete', self.name)
RuntimeError: main thread is not in main loop
Exception ignored in: <bound method Image.del of <tkinter.PhotoImage object at 0x0000020B2D29B2E8>>
Traceback (most recent call last):
File "C:\Program Files\Python36\lib\tkinter_init_.py", line 3501, in del
self.tk.call('image', 'delete', self.name)
RuntimeError: main thread is not in main loop
Tcl_AsyncDelete: async handler deleted by the wrong thread
##グラフ部のプログラム
def plot_graph(cs):
data=cs.values()
label=cs.keys()

plt.style.use('ggplot') plt.rcParams.update({'font.size':15}) size=(9,5) col=cm.Spectral(np.arange(len(data))/float(len(data))) plt.figure(figsize=size,dpi=100) plt.pie(data,colors=col,counterclock=False,startangle=90,autopct=lambda p:'{:.1f}%'.format(p) if p>=5 else '') plt.subplots_adjust(left=0,right=0.7) plt.legend(label,fancybox=True,loc='center left',bbox_to_anchor=(0.9,0.5)) plt.axis('equal') plt.savefig('blog/static/images/simple.png',bbox_inches='tight',pad_inches=0.05) plt.cla() plt.clf() plt.close()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

似たような質問が下記URLにありました。 matplotlib を Django のようなWebアプリケーション内で利用する時は、 画像生成するためのバックエンドを差し替えて上げる必要があるようです。

python

1import matplotlib 2matplotlib.use('Agg') # <= これが必要 3from matplotlib import pyplot

https://stackoverflow.com/a/29172195

投稿2018/07/27 16:35

tell_k

総合スコア2120

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kassymoto

2018/07/28 09:59

ありがとうございます!無事解決できました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問