[PYTHON] Schreiben Sie SVG-Diagramme mit Matplotlib mit Heroku

Einführung

Ich habe vorher etwas Ähnliches geschrieben, aber noch einmal.

Vorbereitung der Pyenv-Umgebung

Installieren Sie pyenv und pyenv-virtualenv mit Homebrew.

$ mkdir qiita-sin
$ cd qiita-sin
$ pyenv virtualenv 2.7.8 qiita-sin
$ pyenv local qiita-sin

Installieren Sie die erforderlichen Bibliotheken und machen Sie sich bereit für die Ausführung auf Heroku

$ pip install flask
$ pip install gunicorn
$ pip install matplotlib
$ echo python-2.7.8 > runtime.txt
$ pip freeze > requirements.txt
$ echo web: gunicorn app:app --log-file=- > Procfile
$ mkdir templates

Vorlage, App-Vorbereitung

Vorlage

sin.html


<!DOCTYPE html>
<html lang="ja">
    <head>
        <title>Sinuskurventest</title>
    </head>
    <body>
        <h1>Sinuskurventest</h1>
        {% autoescape false %}{{svgstr}}{% endautoescape %}
    </body>
</html>

App

app.py


#!/bin/env python
# coding: utf-8

import os
import StringIO

from flask import Flask, render_template
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
import numpy as np

app = Flask(__name__)
app.debug = True

@app.route('/')
def do_sin():
    x = np.arange(-np.pi, np.pi, 0.1)
    y = np.sin(x)

    fig = plt.figure()
    plt.plot(x, y, label="sin")
    plt.legend(loc="best")

    strio = StringIO.StringIO()
    fig.savefig(strio, format="svg")
    plt.close(fig)

    strio.seek(0)
    svgstr = strio.buf[strio.buf.find("<svg"):]

    return render_template("sin.html", svgstr=svgstr.decode("utf-8"))

if __name__ == "__main__":
    port = int(os.environ.get("PORT", 5000))
    app.run(port=port)

Bereitstellen

Zum Git hinzufügen

$ git init
$ echo .python-version > .gitignore
$ git add .
$ git commit -m "initial commit" .

In Heroku bereitstellen

$ heroku create
$ git push heroku master

Kaffeepause für eine Weile, weil es eine Zusammenstellung von Numpy und Matplotlib gibt

Komplett

Bestätigung

$ heroku open

https://limitless-garden-3527.herokuapp.com/ wird geöffnet

Punkt

Kommentar

Für einige Zeit waren der Ceder-14-Stack und https die Standardeinstellungen.

Recommended Posts

Schreiben Sie SVG-Diagramme mit Matplotlib mit Heroku
SVG-Diagramm mit matplotlib mit Heroku erstellen (auf Japanisch angezeigt)
Animieren Sie mehrere Diagramme mit matplotlib
Schreiben Sie Diagramme in Echtzeit mit Matplotlib auf dem Jupyter-Notizbuch
Zeichne Japanisch mit matplotlib auf Ubuntu
Wie man Matplotlib auf Heroku ausführt
Zeichnen Sie einfach Diagramme mit matplotlib
Schreiben Sie ein gestapeltes Histogramm mit matplotlib
Japanisches Diagramm mit VS Code + matplotlib anzeigen
Starten Sie die Flask-Anwendung mit Docker auf Heroku
Zeichnen Sie mit matplotlib ein schönes Kreisdiagramm
Redis auf Heroku
Zeichentipps mit matplotlib auf der Serverseite
[Python] Zeichnen mehrerer Diagramme mit Matplotlib
Shimehari auf Heroku
Animation mit matplotlib
Erstellen Sie mit Jupplotlib interaktive 3D-Diagramme in Jupyter Lab
Japanisch mit Matplotlib
Animation mit matplotlib
Histogramm mit Matplotlib
Bis zur Verwendung von PhantomJS mit Python auf Heroku
Erstellen Sie eine Animation mit matplotlib
Visualisiere grib2 auf einer Karte mit Python (matplotlib)
[Python] Passen Sie Colormap an, wenn Sie Diagramme mit matplotlib zeichnen
Scraping mit Python, Posting auf TwitterBot, regelmäßige Ausführung auf Heroku
(Für diejenigen, die mit Matplotlib nicht vertraut sind) Tipps zum Zeichnen von Diagrammen mit Seaborn
2-Achsen-Plot mit Matplotlib
Beschriftetes Diagramm in NetworkX
Heatmap von Python + matplotlib
Banddiagramm mit Matplotlib
Lernen Sie mit Chemo Informatics Matplotlib
Echtzeitzeichnung mit Matplotlib
Verschiedene Farbleisten mit Matplotlib
3D-Plot mit Matplotlib
Überlagern Sie Diagramme mit Sympy
Stellen Sie die Achsen mit matplotlib ein
Verarbeitung mehrerer Dateien mit Kivy + Matplotlib + Draw Graph auf der GUI
Generieren Sie Diagramme dynamisch mit matplotlib und binden Sie sie mit reporlab in PDF ein
Eine Geschichte, bei der es mir schwer fiel, Grafiken mit matplotlib anzuzeigen