Flask应用中Matplotlib生成的图表无法正常显示问题求助
问题原因与解决方法
核心问题点
- 代码中
plot_recta函数内调用了plt.show(),该方法依赖GUI环境弹出显示窗口,后端服务无图形界面支持,会阻塞绘图流程,导致后续plt.savefig保存的是空白内容。 - 未显式指定Matplotlib非交互后端,默认配置可能尝试调用GUI相关接口抛出隐形错误。
修复步骤
- 调整Matplotlib后端配置,在导入
matplotlib.pyplot之前指定使用非交互的Agg后端,修改导入部分代码如下:
import io import matplotlib # 显式指定非交互后端,必须放在导入pyplot之前 matplotlib.use('Agg') import matplotlib.pyplot as plt from numpy import * from flask import Flask, render_template, make_response
- 删除
plot_recta函数中的plt.show()一行代码,修改后函数如下:
def plot_recta(x, y): b1 = beta1(x, y) b0 = beta0(x, y) pnts_x = linspace(x[0], x[-1], 100) pnts_y = b0 + b1 * pnts_x plt.plot(pnts_x, pnts_y) plt.plot(x, y, "r*")
验证方法
修改完成后重启服务,可先直接访问http://localhost:5000/simple.png确认图片可以正常加载,再访问首页即可正常显示图表。
内容的提问来源于stack exchange,提问作者Leo Zamudio
相关产品推荐
相关产品推荐

