2014-06-30 7 views
9

Ich verwende Matplotlib und MPLD3, um Grafiken zu erstellen, die in HTML-Plages (mit Django) angezeigt werden können. Momentan werden meine Graphen dynamisch aus Daten generiert, die aus CSV-Dateien gezogen werden. Hin und wieder bekomme ich diese Nachricht in meinem Terminal:Schließen Matplotlib Abbildungen

RuntimeWarning: Mehr als 20 Zahlen wurden geöffnet. Abbildungen, die über die pyplot-Schnittstelle() erstellt wurden, bleiben bis zum expliziten Schließen erhalten und verbrauchen möglicherweise zu viel Speicher. (Informationen zum Steuern dieser Warnung finden Sie unter rcParam figure.max_num_figures). max_open_warning, RuntimeWarning)

Ich bin nicht wirklich sicher, was es bedeutet, aber ich gehe davon aus es bedeutet, dass ich eine gewisse Art und Weise Graphen haben sollte zu schließen, die nicht in Gebrauch sind. Gibt es das überhaupt, oder bin ich komplett von der Basis entfernt? Vielen Dank.

+8

Nicht sicher, dass die beste Duplikat ist. Die kurze Antwort ist, dass Sie Ihre Plots aufräumen sollten, nachdem Sie mit ihnen fertig sind: 'plt.close (fig)' oder 'plt.close ('all')' '. – tacaswell

+1

@tcaswell warum nicht als Antwort hinzufügen? – Korem

Antwort

2

Zahlen werden automatisch geschlossen (durch Garbage Collection), wenn Sie sie nicht über die pyplot-Schnittstelle erstellen. Zum Beispiel können Sie Zahlen mit erstellen:

from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas 
from matplotlib.figure import Figure 


def new_fig(): 
    """Create a new matplotlib figure containing one axis""" 
    fig = Figure() 
    FigureCanvas(fig) 
    ax = fig.add_subplot(111) 

    return fig, ax 

(Basierend auf this answer)

7

Ich zog die Antwort von tacaswell in den Kommentaren, aber danach suchen hatte.

Abgleich Ihre Plots, nachdem Sie mit ihnen fertig sind:

plt.close(fig)

oder

plt.close('all')

+3

Seltsamerweise frage ich mich, warum es dann keine 'close()' Methode der Figur gibt. –