Интеграция Matplotlib с Flask: методы динамического построения графиков

Да, Matplotlib может работать с Flask, популярной веб-инфраструктурой Python. Matplotlib — это мощная библиотека для создания визуализаций, которую можно интегрировать в веб-приложения Flask для динамического создания и отображения графиков.

Вот несколько способов использования Matplotlib с Flask, а также примеры кода:

Метод 1. Создайте график и сохраните его как файл изображения, а затем отобразите изображение в маршруте Flask.

import matplotlib.pyplot as plt
from flask import Flask, send_file
app = Flask(__name__)
@app.route('/')
def plot():
    # Create a plot using Matplotlib
    plt.plot([1, 2, 3, 4], [1, 4, 9, 16])
    plt.xlabel('X-axis')
    plt.ylabel('Y-axis')
    plt.title('Flask and Matplotlib')
    # Save the plot as a PNG image
    image_path = 'plot.png'
    plt.savefig(image_path)
    # Return the image file in the Flask response
    return send_file(image_path, mimetype='image/png')
if __name__ == '__main__':
    app.run()

Метод 2: используйте бэкэнд FigureCanvasи AggMatplotlib для визуализации графика в виде изображения и непосредственного встраивания его в шаблон Flask.

from flask import Flask, render_template
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
app = Flask(__name__)
@app.route('/')
def plot():
    # Create a plot using Matplotlib
    fig = Figure()
    axis = fig.add_subplot(1, 1, 1)
    axis.plot([1, 2, 3, 4], [1, 4, 9, 16])
    axis.set_xlabel('X-axis')
    axis.set_ylabel('Y-axis')
    axis.set_title('Flask and Matplotlib')
    # Render the plot as an image and embed it in the Flask template
    canvas = FigureCanvas(fig)
    img = io.BytesIO()
    canvas.print_png(img)
    img.seek(0)
    return render_template('plot.html', image=img)
if __name__ == '__main__':
    app.run()

В приведенных выше примерах кода первый метод сохраняет график как изображение PNG и возвращает его как ответ Flask, а второй метод визуализирует график как изображение с помощью FigureCanvasMatplotlib и встраивает его. в шаблоне Flask.