Observação
Clique aqui para baixar o código de exemplo completo
Incorporando em um servidor de aplicações web (Flask) #
Ao usar Matplotlib em um servidor web, é altamente recomendável não usar pyplot (pyplot mantém referências às figuras abertas para fazer o
show
trabalho, mas isso causará vazamentos de memória, a menos que as figuras sejam fechadas corretamente).
Desde o Matplotlib 3.1, pode-se criar figuras diretamente usando o Figure
construtor e salvá-las em buffers de memória. Em versões mais antigas, era necessário instanciar explicitamente uma tela Agg (consulte, por exemplo
, a demo CanvasAgg ).
O exemplo a seguir usa Flask , mas outras estruturas funcionam de maneira semelhante:
import base64
from io import BytesIO
from flask import Flask
from matplotlib.figure import Figure
app = Flask(__name__)
@app.route("/")
def hello():
# Generate the figure **without using pyplot**.
fig = Figure()
ax = fig.subplots()
ax.plot([1, 2])
# Save it to a temporary buffer.
buf = BytesIO()
fig.savefig(buf, format="png")
# Embed the result in the html output.
data = base64.b64encode(buf.getbuffer()).decode("ascii")
return f"<img src='data:image/png;base64,{data}'/>"
Como o código acima é um aplicativo Flask, ele deve ser executado usando a ferramenta de linha de comando flask, assumindo que o diretório de trabalho contém este script:
Sistemas tipo Unix
FLASK_APP=web_application_server_sgskip flask run
janelas
set FLASK_APP=web_application_server_sgskip
flask run
Imagens clicáveis para HTML #
Andrew Dalke, da Dalke Scientific , escreveu um bom artigo sobre como criar mapas de cliques html com PNGs agg do Matplotlib. Também gostaríamos de adicionar essa funcionalidade ao SVG. Se você estiver interessado em contribuir para esses esforços, seria ótimo.