Python 如何创建显示在烧瓶上的动态绘图?

Python 如何创建显示在烧瓶上的动态绘图?,python,flask,io,Python,Flask,Io,我希望根据用户在flask应用程序上的输入创建动态绘图。但是,我得到以下错误: 应为字符串参数,获得“字节” 如果我使用io.BytesIO(),我不会得到这个错误,但是我不会得到test.html上的绘图 from flask import Flask from flask import render_template import matplotlib.pyplot as plt import io import base64 app = Flask(__name__) @app.rou

我希望根据用户在flask应用程序上的输入创建动态绘图。但是,我得到以下错误: 应为字符串参数,获得“字节”

如果我使用io.BytesIO(),我不会得到这个错误,但是我不会得到test.html上的绘图

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.StringIO()
    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())
    return render_template('test.html', plot_url=plot_url)

if __name__ == '__main__':
    app.debug = True
    app.run()
Test.html

<!DOCTYPE html>
<html>
<title> Plot</title>
<body>
<img src="data:image/png;base64, {{ plot_url }}">
</body>
</html>

情节

使用
BytesIO
和更高版本的
decode()

工作示例

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.debug = True
    app.run()
从烧瓶导入烧瓶
#从flask导入渲染模板
将matplotlib.pyplot作为plt导入
输入io
导入base64
app=烧瓶(名称)
@应用程序路径(“/plot”)
def build_plot():
img=io.BytesIO()
y=[1,2,3,4,5]
x=[0,2,1,3,4]
平面图(x,y)
plt.savefig(img,format='png')
img.seek(0)
plot_url=base64.b64encode(img.getvalue()).decode()
返回“”。格式(绘图url)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.debug=True
app.run()

始终有问题显示完整错误消息(回溯)还有其他有用信息。谢谢!按预期工作。在将matplotlib.pyplot导入为plt时出错。?我如何修复它?@dev什么错误?你可能有很多不同的问题。如果它无法导入
matplotlib
,那么可能您没有安装matplotlib-
pip install matplotlib
python-m pip install matplotlib
@furas谢谢。正在运行
pip安装matplotlib
fixed。