How to use Matplotlib in a web application server
- pyplot을 선언하지 않는다. 기본적으로 pyplot은 show()를 실행하도록 되어있고, 메모리 누수가 발생할 가능성이 있다. Matplotlib 3.1 이후 직접 Figure생성자를 선언하여 figure를 만들고, 해당 값을 인메모리 버퍼(in-memory buffer)에 저장한다.
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}'/>"
동적으로 동작하는 Matplotlib 만들기
링크: 여기를 클릭