2017-12-23 57 views
0

私はmatplotlibについて絶対的な意見です。私はpltからHTMLに保存されたイメージを送る方法はありません。以下のpython /フラスココードはプロットを作成し、画像を保存しています(def fig)。また、HTMLファイルも続きます。私がそれを走らせたとき、私はエラーと言って終わった。 "TypeError:期待されるstr、バイトまたはos.PathLikeオブジェクト、NoneTypeではありません。"フラスコから、matplotlibプロット画像をhtmlに送付してください。

私を助けることができる誰でも私に何をすべきかを教えてください。

@app.route('/images/<air_quality>') 
def images(air_quality): 
    return render_template("displaygraph.html", title=air_quality) 

@app.route('/fig/<air_quality>') 
def fig(air_quality): 
    import matplotlib.pyplot as plt 
    import numpy as np 
    from io import BytesIO 

    img = BytesIO() 
    pm10 = np.array(['23', '45', '56', '12']) 
    pm25 = np.array(['34', '56', '59', '34']) 
    dates = np.array(['2017-12-20', '2017-12-21', '2017-12-22', '2017-12-23']) 

    plt.figure(figsize=(12, 8), dpi=100, facecolor='1.0') 
    plt.title("GangNam", fontsize=20) 
    plt.plot_date(dates, pm10, 'rs--', label='pm10') 
    plt.plot_date(dates, pm25, 'gs--', label='pm25') 
    plt.legend() 
    img = plt.savefig('img.png') 
    return send_file(img, mimetype='image/png') 

ここにHTMLファイルを表示する方法はありません。しかし、このファイルにはimgタグ内にsomelike src = "{{url_for( 'fig'、air_quality = title)}} 'というタグがあります。

答えて

0

BytesIO(py3)、StringIO(py2)のようなメモリ内のファイルにピラブ図を保存することができます。

plt.savefig(img, format='png') 
img.seek(0) 

response=make_response(img.getvalue()) 
response.headers['Content-Type'] = 'image/png' 
img.close() 
return response 
+0

@BdginMan plsですか?私のコードを修正して、それを実行する方法を理解することができますか? –

+0

このコードを貼り付けて実行することができます。 – BeginMan

+0

エラーはTypeErrorのように発生しました:ディスクリプタ 'write'には '_io.BytesIO'オブジェクトが必要ですが、 'bytes' –

関連する問題