备注
Go to the end to download the full example code.
嵌入到 Web 应用程序服务器 (Flask) 中#
在 Web 服务器中使用 Matplotlib 时,强烈建议不要使用 pyplot(pyplot 保留对打开的图形的引用,以使 show 工作,但这会导致内存泄漏,除非正确关闭图形).
自 Matplotlib 3.1 以来,可以直接使用 Figure 构造函数创建图形并将它们保存到内存缓冲区中.在旧版本中,需要显式实例化 Agg 画布(例如,请参阅 CanvasAgg 演示 ).
以下示例使用 Flask,但其他框架的工作方式类似:
import base64
from io import BytesIO
from flask import Flask
from matplotlib.figure import Figure
app = Flask(__name__)
@app.route("/")
def hello():
# Generate the figure **without using pyplot**.
fig = Figure()
ax = fig.subplots()
ax.plot([1, 2])
# Save it to a temporary buffer.
buf = BytesIO()
fig.savefig(buf, format="png")
# Embed the result in the html output.
data = base64.b64encode(buf.getbuffer()).decode("ascii")
return f"<img src='data:image/png;base64,{data}'/>"
由于上面的代码是 Flask 应用程序,因此应使用 flask command-line tool 运行它.假设工作目录包含此脚本:
类 Unix 系统
FLASK_APP=web_application_server_sgskip flask run
Windows
set FLASK_APP=web_application_server_sgskip
flask run
HTML 的可点击图像#
Dalke Scientific 的 Andrew Dalke 撰写了一篇不错的 article ,介绍如何使用 Matplotlib agg PNG 制作 HTML 点击地图.我们还希望将此功能添加到 SVG.如果您有兴趣为这些工作做出贡献,那就太好了.