Nota
Fare clic qui per scaricare il codice di esempio completo
Incorporamento in un server di applicazioni Web (Flask) #
Quando si utilizza Matplotlib in un server Web, si consiglia vivamente di non utilizzare pyplot (pyplot mantiene i riferimenti alle figure aperte per
show
funzionare, ma ciò causerà perdite di memoria a meno che le figure non siano chiuse correttamente).
A partire da Matplotlib 3.1, è possibile creare direttamente figure utilizzando il Figure
costruttore e salvarle in buffer in memoria. Nelle versioni precedenti, era necessario istanziare esplicitamente un canvas Agg (vedi ad esempio
CanvasAgg demo ).
L'esempio seguente utilizza Flask , ma altri framework funzionano in modo simile:
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}'/>"
Poiché il codice precedente è un'applicazione Flask, dovrebbe essere eseguito utilizzando lo strumento da riga di comando flask Supponendo che la directory di lavoro contenga questo script:
Sistemi simili a Unix
FLASK_APP=web_application_server_sgskip flask run
finestre
set FLASK_APP=web_application_server_sgskip
flask run
Immagini cliccabili per HTML #
Andrew Dalke di Dalke Scientific ha scritto un bell'articolo su come creare mappe di clic html con Matplotlib agg PNGs. Vorremmo anche aggiungere questa funzionalità a SVG. Se sei interessato a contribuire a questi sforzi, sarebbe fantastico.