[PYTHON] Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).

Zusammenfassend lautet die Lösung "plt.close ()".

Einführung

Wenn Sie in einer Jupyter-Umgebung (Google Colab.) Mit matplotlib eine große Anzahl von Diagrammen generieren und als Bilddatei speichern möchten oder wenn Sie das Diagramm nicht in der ** Ausführungsergebniszelle (auf dem Bildschirm) des Notizbuchs anzeigen möchten **es gibt.

Insbesondere wenn Sie versuchen, mehr als 20 Diagramme anzuzeigen, wird die folgende Warnung angezeigt.

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:8: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (matplotlib.pyplot.figure) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam figure.max_open_warning).

Ein Hinweis zur Vermeidung dieses Problems.

Aktueller Status

Der folgende Code lautet "Generieren Sie 40 normale Zufallszahlen nach einem Durchschnitt von 50 und einer Standardabweichung von 10, zeichnen Sie ein Histogramm und speichern Sie es als PNG-Datei".

Um die Verteilung jedes Satzes zu sehen, wenn 50 Sätze ausprobiert werden, durchlaufen wir 50 Schleifen.

In der Ausführungsergebniszelle wird eine große Anzahl von Diagrammen ausgegeben


import numpy as np
import matplotlib.pyplot as plt

#Generieren Sie 50 Bilddateien
for i in range(50) : 
  dat = (np.random.normal(50,10,size=40)).astype(np.int64)
  plt.figure()
  plt.hist(dat,bins=10,range=(0,100))
  plt.yticks(range(0,31,10))
  plt.xlim(0,100)
  plt.ylim(0,30)
  plt.savefig(f'fig{i}.png') #Als Bilddatei speichern

Wenn ich den obigen Code ausführe, wird ** die Warnung am Anfang angezeigt ** und eine große Anzahl von Diagrammen wird in der Ausführungsergebniszelle aufgereiht, wodurch das Notizbuch schwer zu sehen ist. Gleichzeitig enthält das Notizbuch (xxxx.ipynb) auch das Image des Ausführungsergebnisses, sodass sich auch die Dateigröße erhöht.

Lösung

Die Lösung besteht darin, "plt.close ()" zu setzen, nachdem das Diagramm in eine Datei "plt.savefig (...)" ausgegeben wurde.

Geben Sie kein Diagramm in die Ausführungsergebniszelle aus


import numpy as np
import matplotlib.pyplot as plt

for i in range(50) : 
  dat = (np.random.normal(50,10,size=40)).astype(np.int64)
  plt.figure()
  plt.hist(dat,bins=10,range=(0,100))
  plt.yticks(range(0,31,10))
  plt.xlim(0,100)
  plt.ylim(0,30)
  plt.savefig(f'fig{i}.png')
  plt.close() #■■■ Ergänzung ■■■

Wenn ich den obigen Code ausführe, wird nichts in die Ausführungsergebniszelle ausgegeben. Natürlich erfolgt die Dateiausgabe ohne Probleme.

Recommended Posts

Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).
Ich möchte das Problem des Speicherverlusts bei der Ausgabe einer großen Anzahl von Bildern mit Matplotlib lösen
Ich möchte die Anzahl von num_boost_round anzeigen, wenn Early_stopping mithilfe des XGBoost-Rückrufs angewendet wird (nicht erreicht).
Ich möchte die Standortinformationen von GTFS Realtime auf Jupyter zeichnen! (Mit Ballon)
Ich möchte eine Jupyter-Umgebung mit einem Befehl starten
Ich möchte eine virtuelle Umgebung mit Jupyter Notebook verwenden!
Zeigen Sie das Diagramm von tensorBoard auf jupyter an
Ich habe versucht, den Höhenwert von DTM in einem Diagramm anzuzeigen
Ich möchte die Mühe der Eingabe beim Debuggen von Paizas Skill-Check-Beispiel in einer lokalen Umgebung wie Jupyter [Python] sparen.
Ich möchte mehrere Bilder mit matplotlib anzeigen.
Ich möchte nur verschiedene Zeilen der Textdatei mit diff anzeigen
Was tun, wenn das Diagramm nicht auf dem Jupyter-Notizbuch (Ipython) angezeigt wird?
Eine Bibliothek für Datenwissenschaft "Ich möchte das tun" auf dem Jupyter Notebook
Ein Skript, das Ränder kombiniert, wenn mehrere Diagramme mit Gnuplot auf Kacheln eingefügt werden
Ich möchte einen Screenshot der Site in Docker mit einer beliebigen Schriftart erstellen
Ich möchte manuell eine Legende mit matplotlib erstellen
Ein Tool zum Verfolgen von Postern mit einer großen Anzahl von Likes auf Instagram [25 Minuten bis 1 Sekunde]
Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Ich möchte eine GUI-Entwicklungsumgebung mit Python oder Golang auf dem Mac einrichten
Ich möchte eine wunderschön angepasste Wärmekarte der Korrelationsmatrix ausgeben. matplotlib edition
[Shell-Start] Ich habe versucht, die Shell mit einem billigen Linux-Board-G-Cluster auf dem Fernseher anzuzeigen
[Grafikzeichnung] Ich habe versucht, ein mehrreihiges Balkendiagramm mit Matplotlib und Seaborn zu schreiben
Wie man zeichnet, indem man die Farbe des Diagramms kontinuierlich mit matplotlib ändert und einfach viele Legenden anordnet
Verfahren, die durchgeführt werden müssen, wenn Japanisch nicht in matplotlib angezeigt wird
[Visualisierung] Ich möchte mit Plotly ein schönes Diagramm zeichnen
Ich habe die Grundoperation von matplotlib in Jupyter Lab geschrieben
Ich habe ein Python-Diagramm mit öffentlichen Daten zur Anzahl der neuen Coronavirus (COVID-19) -positiven Patienten in Tokio + mit einem Link zur nationalen Version der Praxisdaten gezeichnet
So schreiben Sie, wenn Sie eine Zahl nach der Gruppennummer setzen möchten, die durch einen regulären Ausdruck in Python ersetzt werden soll
Ich möchte ausgeben, während der Wert des Typs (z. B. datetime) konvertiert wird, der bei der Ausgabe von json mit Python nicht unterstützt wird
Verwalten Sie die Überlappung, wenn Sie ein Streudiagramm mit einer großen Datenmenge zeichnen (Matplotlib, Pandas, Datashader).
Was tun, wenn ein Teil des Hintergrundbilds transparent wird, wenn Sie transparente Bilder mit Pillow kombinieren?
Eine Geschichte, bei der es mir schwer fiel, Grafiken mit matplotlib anzuzeigen
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Ich möchte den vollständigen Text mit elasticsearch + python durchsuchen
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Ich möchte ○○ mit Pandas machen
Ich möchte das Pytest-Gerät als Bibliothek an einer anderen Stelle laden (Pytest ist möglicherweise nicht in der Umgebung vorhanden).
[Kleine Geschichte] So speichern Sie Matplotlib-Diagramme in einem Stapel mit Jupyter
Verstehen, wie Bilder auf Jupyter angezeigt werden (Verwendung von imshow / matplotlib von OpenCV)
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Ich möchte meine Gefühle mit den Texten von Mr. Children ausdrücken
Ich habe es mit den Top 100 PyPI-Paketen versucht.> Ich habe versucht, die auf Python installierten Pakete grafisch darzustellen
Ich möchte das automatische Löschen des tmp-Bereichs in RHEL7 stoppen
Erstellen Sie eine Python3-Umgebung mit pyenv auf einem Mac und zeigen Sie NetworkX-Diagramme an
Hinweise, was zu tun ist, wenn das Löschen von Schatten nicht mit Scatter () / Scatter3d () von Matplotlib funktioniert
Die Geschichte des Versuchs, SSH_AUTH_SOCK mit LD_PRELOAD auf dem Bildschirm veraltet zu halten
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich habe keine Angst, eine Programmierumgebung aufzubauen.
Ich bin ein Amateur am 14. Tag von Python, aber ich möchte maschinelles Lernen mit Scicit-Learn ausprobieren
Ich wollte die Anzahl der Zeilen in mehreren Dateien wissen und versuchte, sie mit einem Befehl abzurufen
Beispiel, was zu tun ist, wenn das Beispielskript nicht funktioniert (OpenCV-Python)
Ich möchte den Transferstatus der 2020 J League visualisieren. Was soll ich tun?
Einzeiler, der unter Linux eine große Anzahl von Testdateien gleichzeitig erstellt
Die Geschichte der IPv6-Adresse, die ich auf ein Minimum beschränken möchte
Ich habe Pygame mit Python 3.5.1 in der Umgebung von pyenv unter OS X installiert