Matplotlib-Graphen ohne laufenden X-Server erstellen [doppelte]

Diese Frage hat hier schon eine Antwort:

  • Erzeugen eines PNG mit matplotlib, wenn DISPLAY undefined 10 Antworten ist

Matplotlib scheint die Umgebungsvariable $ DISPLAY zu erfordern, was einen laufenden X-Server bedeutet.
Einige Web-Hosting-Dienste erlauben keine laufende X-Server-Sitzung.
Gibt es eine Möglichkeit, Graphen mit matplotlib ohne laufenden X-Server zu generieren?

[username@hostname ~]$ python2.6 Python 2.6.5 (r265:79063, Nov 23 2010, 02:02:03) [GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import matplotlib.pyplot as plt >>> fig = plt.figure() Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/pyplot.py", line 270, in figure **kwargs) File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager window = Tk.Tk() File "/usr/local/lib/python2.6/lib-tk/Tkinter.py", line 1643, in __init__ self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) _tkinter.TclError: no display name and no $DISPLAY environment variable >>> 

2 Solutions collect form web for “Matplotlib-Graphen ohne laufenden X-Server erstellen [doppelte]”

@ Neils Antwort ist eine (vollkommen gültige) Weg, es zu tun, aber du kannst auch einfach matplotlib.use('Agg') matplotlib.pyplot , bevor matplotlib.pyplot importierst und dann weiter normal matplotlib.pyplot .

Z.B

 import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ax.plot(range(10)) fig.savefig('temp.png') 

Du musst auch das Agg-Backend nicht benutzen. Die pdf, ps, svg, agg, cairo und gdk backends können ohne einen X-Server verwendet werden. Allerdings wird nur das Agg-Backend standardmäßig gebaut (ich denke), also gibt es eine gute Chance, dass die anderen Backends bei deiner Installation nicht aktiviert werden können.

Alternativ können Sie einfach den Backend-Parameter in Ihre .matplotlibrc Datei setzen, um automatisch matplotlib.pyplot den angegebenen Renderer zu verwenden.

Sie müssen die Matplotlib API direkt verwenden, anstatt durch die Pylab-Schnittstelle zu gehen. Hier ist ein gutes Beispiel:

http://www.dalkescientific.com/writings/diary/archive/2005/04/23/matplotlib_without_gui.html

  • Wie man einen nicht quadratischen Konturfaktor macht
  • Wie man zwei barh in einer achse plotten
  • Zwei einzigartige Markersymbole für eine Legende
  • Wie berechnen Sie die Wahrscheinlichkeit eines Wertes, der eine Liste von Samples aus einer Verteilung in Python gegeben wird?
  • Testpunkt mit in / out einer Vektor-Shape-Datei
  • Wie man mehrere Histogramme auf dem gleichen Plot mit Seaborn aufgibt
  • Python, Matplotlib, Plot Multi-Linien (Array) und Animation
  • Python 2.7: Matplotlib.pyplot kann nicht importiert werden
  • Die Funktion von funcAnimation wird anstelle von einmal 2 mal angerufen
  • MatPlotLib dynamische Zeitachse
  • % Matplotlib Notebook mit einem leeren Histogramm
  • Python ist die beste Programmiersprache der Welt.