python matplotlib Agg vs. interaktive Plotten und tight_layout
Nutzen, wenn ich die Agg
backend, ich bin nicht in der Lage zu halten Bild Fenster öffnen, mit show()
(unabhängig von block=True
oder nicht)---Sie schließen einfach praktisch sofort. Wenn ich nicht verwenden Agg
, dann bekomme ich die Warnung:
/Library/Python/2.7/site-packages/matplotlib-1.2.0-py2.7-macosx-10.8-intel.egg/matplotlib/tight_layout.py:225: UserWarning: tight_layout : falling back to Agg renderer warnings.warn("tight_layout : falling back to Agg renderer")
Beispielcode:
import matplotlib as mpl
mpl.use('Agg') # With this line = figure disappears; without this line = warning
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
mu, sigma = 0, 0.5
x = np.linspace(-3, 3, 100)
plt.plot(x, mlab.normpdf(x, mu, sigma))
fig.tight_layout()
plt.show()
Ist es ein anderes backend oder Verfahren sollte ich verwenden?
- Was ist Ihre Standard-backend? Wenn Sie
import matplotlib as mpl
und dannmpl.get_backend()
, whad Sie bekommen? Dies wird das backend verwendet wird, wenn Sie nicht angeben, "Agg", und Sie können in der Lage sein zu bekommen, was Sie wollen, durch den Wechsel zu einem anderen backend-entweder der beiden. - hast du endlich eine Arbeit um. Ich bin vor dem gleichen problem.
- Die unbefriedigender workaround ist, zu entfernen
mpl.use('Agg')
, und verwendenfig.set_tight_layout(True)
stattfig.tight_layout()
wie vorgeschlagen von @FelipeCorreia
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den workaround, gegeben durch @FilipeCorreia in einem Kommentar, ist zu entfernen
mpl.use('Agg')
, und verwenden Siefig.set_tight_layout(True)
stattfig.tight_layout()
.plt.gcf().set_tight_layout(True)
stattplt.tight_layout()
.plt.tight_layout()
verwende ichfig.tight_layout()
..., was Objekt zurückgegebenplt.gcf()
.plt.function()
syntax.Agg
ist ein non-interactive backend, d.h. es wird nicht auf dem Bildschirm angezeigt, nur speichern Sie in Dateien. Welches backend benutzt du? Du hast OSX, vielleicht können Sie versuchen, die 'macosx', oder ein interaktives backend verwendet Agg (zB. QT4Agg, WXAgg).fig.set_tight_layout(True)
stattfig.tight_layout()
. Sehen Sie die Kommentare auf dieses Problem auf github.