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:
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.
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.
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 | 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.).)
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) **
** Abb. Visual Studio Code (Bilddatei anzeigen (png)) ** Sie können die Bilddatei (png) sehen.
** Abb. Visual Studio Code (SVG-Datei anzeigen) (Bonus) ** 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.)