Dans de nombreux cas, le calcul est exécuté à distance dans le travail de "calcul, tracé et confirmation du résultat". Les options qui viennent à l'esprit pour ce flux de travail sont:
Dans le passé, les options 1 et 2 étaient souvent sélectionnées, mais cette fois, j'aimerais vous présenter des astuces sur le dessin côté serveur de ** l'option 4 **.
Quand j'ai dit: "Il y avait un savefig () dans matplotlib.pylot."
Traceback
...(Omis)
RuntimeError: Invalid DISPLAY variable
Une erreur se produira comme dans. Ceci est probablement dû au fait que l'AFFICHAGE qui est la destination d'affichage n'est pas défini. Vous pouvez prendre des mesures en recherchant sur le net et en spécifiant le backend de matplotlib.
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()
Au début du programme, là où le module est importé, matplotlib spécifie d'utiliser AGG (moteur Anti-Grain Geometry).
import matplotlib as mpl
mpl.use('Agg')
import matplotlib.pyplot as plt
Le but est de mettre cette instruction mpl.use ('Agg')
avant d'importer matplotlib.pyplot. Maintenant, savefig () fonctionne normalement.
Cette fois, j'ai spécifié 'AGG', mais d'après le document matplotlib, il semble que plusieurs types puissent être utilisés pour ce backends.
** Backends non interactifs (cités de la documentation matplotlib) **
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 |
J'ai essayé de spécifier'SVG 'et de l'exécuter, mais le fichier SVG était sorti normalement.
(L'environnement de programmation est OS Ubuntu-14.04 LTS, Python 2.7.11, Anaconda 2.4.1 avec une série de bibliothèques (numpy, matplotlib, etc.).)
Le fichier graphique a été généré avec succès. Vous pouvez utiliser n'importe quel outil d'affichage graphique que vous aimez, mais ici, nous vous recommandons Visual Studio Code. Comme vous le savez, Visual Studio Code est un éditeur de texte, il gère donc principalement le texte, mais vous pouvez l'ouvrir dans les unités de dossier et vous pouvez travailler tout en changeant activement de fichiers. Par hasard, lorsque j'ai spécifié (touché) un fichier image (png), l'image était affichée, et j'ai pu remarquer cette fonction.
(Le fichier est partagé par le service serveur (smb). Le dossier serveur est ouvert par Visual Studio Code côté client (Windows).)
** Fig. Visual Studio Code (affiche le code normalement) **
** Fig. Visual Studio Code (afficher le fichier image (png)) ** Vous pouvez voir le fichier image (png).
** Fig. Visual Studio Code (Afficher le fichier SVG) (Bonus) ** Je me suis demandé s'il serait rendu, mais SVG était du texte.
De cette façon, c'est très pratique car vous pouvez vérifier la figure sans quitter le travail de l'éditeur de texte.
Pourquoi l'éditeur prend-il en charge la fonction d'affichage d'image? J'étais un peu sceptique, mais j'imagine qu'il était nécessaire d'ajouter une fonction d'affichage d'image lors de l'ajout de la fonction de prévisualisation pour l'édition Markdown.
(Visual Studio Code a utilisé la version 0.10.8.)
--Comment éviter la récurrence du problème que matplotlib est de la mousse lorsque $ DISPLAY n'est pas défini --Qiita http://qiita.com/nishio/items/0a8949262d86c181668b
Recommended Posts