Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีแสดงกราฟ Matplotlib ใน Flask


ภาพรวม

สาธิตวิธีสร้างเว็บแอป Flask ที่แสดงกราฟ Matplotlib เป็นภาพ PNG ผ่าน Route

ขั้นตอน

  1. สร้าง Flask App
  2. กำหนด Route /print-plot
  3. ในฟังก์ชัน View:
    • สร้าง Figure และ Axis
    • สร้างข้อมูลสุ่ม xs, ys
    • พลอตด้วย axis.plot(xs, ys)
    • เขียน Figure ลง BytesIO buffer
    • คืนค่า Response พร้อม mimetype image/png
  4. รันเซิร์ฟเวอร์: export FLASK_APP=file.py && flask run
  5. เปิดเบราว์เซอร์: https://127.0.0.1:5000/print-plot/

ตัวอย่างโค้ด

import io
from flask import Response, Flask
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
import numpy as np

plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True

app = Flask(__name__)

@app.route('/print-plot')
def plot_png():
    fig = Figure()
    axis = fig.add_subplot(1, 1, 1)
    xs = np.random.rand(100)
    ys = np.random.rand(100)
    axis.plot(xs, ys)
    output = io.BytesIO()
    FigureCanvas(fig).print_png(output)
    return Response(output.getvalue(), mimetype='image/png')

if __name__ == '__main__':
    app.run()

หมายเหตุ

  • ใช้ Backend Agg (Non-interactive) เหมาะสำหรับ Server
  • BytesIO ใช้เก็บภาพในหน่วยความจำ ไม่ต้องเขียนไฟล์