Solution 1
#!/usr/bin/env python3
################################################################################
# To run:
# export FLASK_APP=Flask-matplotlib.py
# flask run
#
# Open browser and go to:
# http://127.0.0.1:5000/plot
################################################################################
import io
import numpy as np
from flask import Flask, Response
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib import pyplot as plt
plt.rcParams["figure.autolayout"] = True
plt.rcParams["figure.figsize"] = [12,10]
app = Flask(__name__)
@app.route('/plot')
def plot_fig():
fig = Figure()
axis = fig.add_subplot(1, 1, 1)
# Generate x axis
x = np.arange(0, 10, 0.1);
# Plot it
axis.plot(x, np.sin(x), '-')
axis.plot(x, np.cos(x), '--')
output = io.BytesIO()
FigureCanvas(fig).print_png(output)
return Response(output.getvalue(), mimetype='image/png')
Solution 2
import matplotlib
from matplotlib import pyplot as plt
matplotlib.use('Agg')