最近,我有一个项目是在网页上实现动态绘图。
这是我的python代码
from flask import Flask
#from flask import render_template
import matplotlib.pyplot as plt
import io
import base64
app = Flask(__name__)
@app.route('/plot')
def build_plot():
img = io.BytesIO()
y = [1,2,3,4,5]
x = [0,2,1,3,4]
plt.plot(x,y)
plt.savefig(img, format='png')
img.seek(0)
plot_url = base64.b64encode(img.getvalue()).decode()
return '<img src="data:image/png;base64,{}">'.format(plot_url)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
这是我的HTML代码
<!DOCTYPE html>
<html>
<head>
<title> Plot</title>
<meta content='5; url=http://127.0.0.1:5000/plot' http-equiv='refresh'>
</head>
<body>
<img src="data:image/png;base64, {{ plot_url }}">
</body>
</html>
虽然我在我的HTML代码中添加了<meta content='5; url=http://127.0.0.1:5000/plot' http-equiv='refresh'>
,但它仍然无法自动刷新。
如果我想观察绘图的变化,我仍然需要手动刷新它。
任何人都可以帮我解决这个问题吗?非常感谢
答案 0 :(得分:4)
您不需要包含URL
。只使用meta
代码的内容属性。
<meta http-equiv="refresh" content="5" >
但要查看图表中的实时更改,您可能需要查看烧瓶中的sockets。这将有助于服务器使用broadcasting将更改推送到所有客户端。使用套接字比定期刷新页面更好。