首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在flask中,如何将matplotlib绘图图像发送到html?

在flask中,如何将matplotlib绘图图像发送到html?
EN

Stack Overflow用户
提问于 2017-12-23 15:31:46
回答 1查看 1.7K关注 0票数 0

flask中,如何使在matplotlib中从plt保存的图像显示在网页上?下面的python代码创建了一个绘图,并将其另存为.png图像。HTML文件也跟在后面。当我运行它的时候,我得到的错误是:

代码语言:javascript
复制
TypeError: expected str, bytes or os.PathLike object, not NoneType.

谁能帮我,请告诉我该怎么做。

代码语言:javascript
复制
@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标记中包含以下内容:

代码语言:javascript
复制
src="{{url_for('fig', air_quality = title)}}
EN

回答 1

Stack Overflow用户

发布于 2017-12-23 16:27:47

您可以将pylab图形保存到内存文件中,如BytesIO(py3),StringIO(py2)。

代码语言:javascript
复制
plt.savefig(img, format='png')
img.seek(0)

response=make_response(img.getvalue())
response.headers['Content-Type'] = 'image/png'
img.close()
return response
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47950680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档