Jeśli korzystam z backendu Agg
, nie mogę zachować otwartych okien obrazu przy pomocy show()
(niezależnie od block=True
lub nie) --- po prostu praktycznie natychmiast się zamykają. Jeśli nie używam Agg
, wtedy pojawia się ostrzeżenie: kodpython matplotlib Agg vs. interaktywne kreślenie i tight_layout
/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")
Próbka:
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()
Czy istnieje inny backend lub metodologia I powinny być using?
Jaki jest twój domyślny backend? Jeśli zrobisz 'import matplotlib jako mpl', a następnie' mpl.get_backend() ', co dostaniesz? Będzie to backend, którego używa, gdy nie określisz "Agg", i możesz być w stanie uzyskać to, czego chcesz, przełączając się na inny backend z jednego z tych dwóch. – BrenBarn
@zhermes: czy w końcu znalazłeś pracę? Stoję w obliczu tego samego problemu. – nia
Niezadowalającym rozwiązaniem jest usunięcie 'mpl.use ('Agg')' i użycie 'fig.set_tight_layout (True)' zamiast 'fig.tight_layout()' zgodnie z sugestią @FelipeCorreia – DilithiumMatrix