[PYTHON] Zeichentipps mit matplotlib auf der Serverseite

In vielen Fällen wird die Berechnung in der Arbeit "Berechnen, Zeichnen und Bestätigen des Ergebnisses" aus der Ferne ausgeführt. Die Optionen, die für diesen Workflow in den Sinn kommen, sind:

  1. Speichern Sie die Ausgabedaten (Protokoll) des Berechnungsergebnisses in einer Datei. (Es kann textbasiert oder serialisiert sein.) Übertragen Sie es auf den Client und zeichnen und überprüfen Sie es mit einem anderen Programm.
  2. Verwenden Sie Jupyter Notebook. Führen Sie den Jupyter Notebook-Dienst auf dem Server aus, stellen Sie vom Client aus eine Verbindung zum Webbrowser her und überprüfen Sie die Abbildung im Browser.
  3. Stellen Sie eine Verbindung zum Server und zum Remotedesktop her, um eine Reihe von Vorgängen auszuführen.
  4. Zeichnen und geben Sie die Figurendatei auf der Serverseite aus. Zeigen Sie Bilddateien wie PNG und PDF auf dem Client-PC an.

In der Vergangenheit wurden häufig die Optionen 1 und 2 ausgewählt, aber dieses Mal möchte ich Tipps zum serverseitigen Zeichnen von ** Option 4 ** einführen.

Erster Fehler

Als ich sagte: "In matplotlib.pylot gab es eine savefig ()."

Traceback 
...(Weggelassen)
RuntimeError: Invalid DISPLAY variable

Ein Fehler tritt wie in auf. Dies liegt wahrscheinlich daran, dass das DISPLAY, das das Anzeigeziel ist, nicht festgelegt ist. Sie können Maßnahmen ergreifen, indem Sie das Netz durchsuchen und das Backend von matplotlib angeben.

import numpy as np
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
from matplotlib import cm

def sphere_func(x, y):
    z = x * x + y * y
    
    return z

def contr3d1():
    ndiv = 200
    xp = np.linspace(-4., 4., ndiv)
    yp = np.linspace(-4., 4., ndiv)
    
    xx, yy = np.meshgrid(xp, yp, sparse=True)
    
    zp = sphere_func(xx, yy)
    
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.plot_surface(xx, yy, zp, 
        rstride=6, cstride=6, alpha=0.7, cmap=cm.rainbow)
    ax.set_zlim(-1.0, 40.)
    
    # plt.show()
    
    fig.savefig('sphere_3d.png')

if __name__ == '__main__':
    contr3d1()

Zu Beginn des Programms, in das das Modul importiert wird, gibt matplotlib die Verwendung von AGG (Anti-Grain Geometry Engine) an.

import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt

Der Punkt ist, diese Anweisung "mpl.use (" Agg ")" vor dem Importieren von matplotlib.pyplot zu setzen. Jetzt funktioniert savefig () normal.

Geben Sie die Backends von matplotlib an

Dieses Mal habe ich 'AGG' angegeben, aber laut Matplotlib-Dokument scheinen für diese Backends mehrere Typen verwendet werden zu können.

** Nicht interaktive Backends (zitiert aus der matplotlib-Dokumentation) **

Renderere Filetypes Description
AGG png raster grapahics - high quality images using the Anti-Grain Geometry engine
PS ps eps vector graphics - Postscript output
PDS pdf vector graphics - Portable Document Format
SVG svg vector graphics - Scalable Vector Graphics
Cairo png ps pdf svg ... vector graphics - Cairo graphics
GDK png jpg tiff ... raster graphics - the Gimp Drawing Kit

Ich habe versucht, 'SVG' anzugeben und es auszuführen, aber die SVG-Datei wurde normal ausgegeben.

(Die Programmierumgebung ist OS Ubuntu-14.04 LTS, Python 2.7.11, Anaconda 2.4.1 mit einer Reihe von Bibliotheken (numpy, matplotlib usw.).)

Unerwartete Grafikanzeigefunktion von Visual Studio Code

Die Grafikdatei wurde erfolgreich ausgegeben. Sie können jedes beliebige Grafikanzeigetool verwenden. Hier empfehlen wir jedoch Visual Studio Code. Wie Sie wissen, ist Visual Studio Code ein Texteditor, der hauptsächlich Text verarbeitet. Sie können ihn jedoch in Ordnereinheiten öffnen und arbeiten, während Sie aktiv die darin enthaltenen Dateien wechseln. Zufällig wurde das Bild angezeigt, als ich eine Bilddatei (png) spezifizierte (berührte), und ich konnte diese Funktion bemerken.

(Die Datei wird vom Serverdienst (smb) gemeinsam genutzt. Der Serverordner wird von Visual Studio Code auf der Clientseite (Windows) geöffnet.)

** Abb. Visual Studio-Code (Code normalerweise anzeigen) ** matplotlib_snap1.png

** Abb. Visual Studio Code (Bilddatei anzeigen (png)) ** matplotlib_snap2.png Sie können die Bilddatei (png) sehen.

** Abb. Visual Studio Code (SVG-Datei anzeigen) (Bonus) ** matplotlib_snap3.png Ich fragte mich, ob es gerendert werden würde, aber SVG war Text.

Auf diese Weise ist es sehr praktisch, da Sie die Abbildung überprüfen können, ohne die Arbeit des Texteditors zu verlassen.

Warum unterstützt der Editor die Bildanzeigefunktion? Ich war etwas skeptisch, aber ich stelle mir vor, dass es notwendig war, eine Bildanzeigefunktion hinzuzufügen, wenn die Vorschaufunktion für die Markdown-Bearbeitung hinzugefügt wurde.

(Visual Studio Code verwendet Version 0.10.8.)

Referenzen (Website)

Recommended Posts

Zeichentipps mit matplotlib auf der Serverseite
Hinweise zur Verwendung von matplotlib auf dem Server
Ermitteln Sie mit Selenium + PhantomJS + Python die Breite des Div auf der Serverseite
Echtzeitzeichnung mit Matplotlib
(Für diejenigen, die mit Matplotlib nicht vertraut sind) Tipps zum Zeichnen von Diagrammen mit Seaborn
Diagrammzeichnungsmethode mit matplotlib
Memo, um den Wert auf der HTML-Javascript-Seite mit Jupiter zu erhalten
Greifen Sie mit python27 / pyodbc auf dem Container auf den SQL Server des Hosts zu
Image Optimize auf der Serverseite mithilfe der Web-API von TinyPNG
Zeichne Japanisch mit matplotlib auf Ubuntu
Fügen Sie die Matplotlib-Figur in Excel ein
Die Synchronisierung mit dem Server, der ssh auf localhost portiert hat, schlägt fehl. [Gelöst]
Einstellungen zum Starten des Dango-Projekts auf dem Server mit Pycharm
[Python] Legen Sie den Diagrammbereich mit matplotlib fest
Nicht genügend var-Speicherplatz auf dem Mailserver
Passen Sie den Abstand zwischen den Figuren mit Matplotlib an
Stellen Sie mit Ihrem Smartphone eine Verbindung zum VPN her und schalten Sie den Server aus / ein
Versuchen Sie, mit matplotlib eine Normalverteilung zu zeichnen
Fügen Sie auf beiden Seiten ein Konfidenzintervall von 95% hinzu, um mit Python / Matplotlib zu rechnen
Django + Apache mit mod_wsgi unter Windows Server 2016
Bearbeiten Sie die Datei des SSH-Verbindungszielservers auf dem Server mit VS-Code
Schreiben Sie SVG-Diagramme mit Matplotlib mit Heroku
Laden Sie mit Python Dateien im Web herunter
Stellen Sie die Farbe der xticklabels individuell mit matplotlib ein
Zeigen Sie Markierungen über dem Rand mit matplotlib an
Richten Sie die Farbleiste mit matplotlib an der Figur aus
Veröffentlichen Sie das aktuelle Verzeichnis auf dem Webserver
Zeigen Sie ImageField-Bilder normalerweise mit Django + Google Cloud Strage auf dem Server an
Zeichnen Sie ein Faltlinien- / Streudiagramm mit Python Matplotlib für die CSV-Datei (2 Spalten).
Melden Sie sich mit SSH bei einem Remote-Server an
Führen Sie Aufgaben im Hintergrund auf dem Server aus, an den Sie gesendet haben
Erste Schritte mit dem Zeichnen mit matplotlib: Schreiben einfacher Funktionen
Erhöhen Sie die Schriftgröße des Diagramms mit matplotlib
Aktivieren Sie Jupyter Notebook mit conda auf dem Remote-Server
Einführung in Python mit Atom (unterwegs)
Die Basis der Graphentheorie mit Matplotlib-Animation
Grafikzeichnung mit Jupyter (Ipython-Notizbuch) + Matplotlib + Vagabund
Visualisieren Sie das Verhalten des Sortieralgorithmus mit matplotlib
Hängen Sie das Verzeichnis eines anderen Servers mit sshfs ein
Öffnen Sie das auf dem Server gestartete Jupyter-Notizbuch aus der Ferne
Ich habe versucht, mit tkinter mit dem Taschenrechner zu spielen
Visualisiere grib2 auf einer Karte mit Python (matplotlib)
matplotlib: Ersetzen Sie die Achse selbst durch eine andere.
Betten Sie andere Bilder mit ArcPy in das Raster ein
[Python] Passen Sie Colormap an, wenn Sie Diagramme mit matplotlib zeichnen
Eine Geschichte über einen Ingenieur, der nur auf der Serverseite kam, erstellte ein Portfolio
Setzen Sie Scipy + Matplotlib in Ubuntu auf Vagrant und zeigen Sie die Grafik mit X11 Forwarding an
[CGI] Führen Sie das Server-Python-Programm mit Vue.js + axios aus und rufen Sie die Ausgabedaten ab
Animation mit matplotlib
Ich habe versucht, auf der WEB-Serverseite bei einer internen Python-Lernsitzung zu lernen
Japanisch mit Matplotlib
Animation mit matplotlib
Histogramm mit Matplotlib
Erstellen Sie eine Animation mit matplotlib
Der schlampigste Weg, CORS mit aiohttp Server zu unterstützen
[CentOS 7.3] Erstellen Sie einen FTP-Server auf dem ESXi-Host
Fügen Sie mit Matplotlib Informationen am unteren Rand der Abbildung hinzu
Überwachen Sie das Trainingsmodell mit TensorBord auf Jupyter Notebook
Machen Sie mit Python einen Haltepunkt auf der c-Ebene