Skip to content

Instantly share code, notes, and snippets.

@rduplain
Created January 19, 2012 17:28
Show Gist options
  • Star 54 You must be signed in to star a gist
  • Fork 9 You must be signed in to fork a gist
  • Save rduplain/1641344 to your computer and use it in GitHub Desktop.
Save rduplain/1641344 to your computer and use it in GitHub Desktop.
Plot a PNG using matplotlib in a web request, using Flask.
"Plot a PNG using matplotlib in a web request, using Flask."
# Install dependencies, preferably in a virtualenv:
#
# pip install flask matplotlib
#
# Run the development server:
#
# python app.py
#
# Go to http://localhost:5000/plot.png and see a plot of random data.
import random
import StringIO
from flask import Flask, make_response
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
from matplotlib.figure import Figure
app = Flask(__name__)
@app.route('/plot.png')
def plot():
fig = Figure()
axis = fig.add_subplot(1, 1, 1)
xs = range(100)
ys = [random.randint(1, 50) for x in xs]
axis.plot(xs, ys)
canvas = FigureCanvas(fig)
output = StringIO.StringIO()
canvas.print_png(output)
response = make_response(output.getvalue())
response.mimetype = 'image/png'
return response
if __name__ == '__main__':
app.run(debug=True)
@j-nila
Copy link

j-nila commented Mar 15, 2021

I am using python3.5 and ran the code with slight modification:

  1. Instead of import StringIO, I used import io
  2. Instead of output = StringIO.StringIO(), I used output = io.BytesIO()

Thanks

Very helpful, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment