public
Last active

Example of rendering a matplotlib image directly to Flask view

  • Download Gist
flaskplotlib.py
Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
from flask import Flask, make_response
app = Flask(__name__)
 
@app.route("/simple.png")
def simple():
import datetime
import StringIO
import random
 
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
from matplotlib.dates import DateFormatter
 
fig=Figure()
ax=fig.add_subplot(111)
x=[]
y=[]
now=datetime.datetime.now()
delta=datetime.timedelta(days=1)
for i in range(10):
x.append(now)
now+=delta
y.append(random.randint(0, 1000))
ax.plot_date(x, y, '-')
ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
fig.autofmt_xdate()
canvas=FigureCanvas(fig)
png_output = StringIO.StringIO()
canvas.print_png(png_output)
response=make_response(png_output.getvalue())
response.headers['Content-Type'] = 'image/png'
return response
 
 
if __name__ == "__main__":
app.run()

Yo this is awesome. Thank you and works perfectly out of the box.

Thanks, this has given me some ideas!

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.