Ich versuche, Diagramme zu speichern, die ich mit matplotlib erstellt habe. Die Bilder werden jedoch leer gespeichert.
Hier ist mein Code:
plt.subplot(121)
plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.subplot(122)
y = copy.deepcopy(tumorStack)
y = np.ma.masked_where(y == 0, y)
plt.imshow(dataStack, cmap=mpl.cm.bone)
plt.imshow(y, cmap=mpl.cm.jet_r, interpolation='nearest')
if T0 is not None:
plt.subplot(123)
plt.imshow(T0, cmap=mpl.cm.bone)
#plt.subplot(124)
#Autozoom
#else:
#plt.subplot(124)
#Autozoom
plt.show()
plt.draw()
plt.savefig('tessstttyyy.png', dpi=100)
Und tessstttyyy.png ist leer (habe es auch mit .jpg versucht)
Erstens: Was passiert wann? T0 is not None? Ich würde das testen und dann die Werte anpassen, an die ich übergebe plt.subplot(); Versuchen Sie es vielleicht mit den Werten 131, 132 und 133 oder mit Werten, die davon abhängen, ob oder nicht T0 existiert.
Zweitens, danach plt.show() aufgerufen wird, entsteht eine neue Figur. Um damit umzugehen, können Sie
Forderung plt.savefig('tessstttyyy.png', dpi=100) bevor Sie anrufen plt.show()
Bewahren Sie die Figur vor Ihnen auf show() per Anruf plt.gcf() für „aktuelle Zahl abrufen“, dann können Sie anrufen savefig() dazu Figure jederzeit Widerspruch einlegen.
In Ihrem Code ist „tesssttyyy.png“ leer, da es die neue Figur speichert, für die noch nichts gezeichnet wurde.
Ich habe vergessen, den T0-Teil zu entfernen … es wurde zuvor kommentiert.
– Tylerthemiler
26. Januar 2012 um 1:18
Ein Sonderfall hiervon tritt auf jupyter Notizbücher mit %matplotlib inline aktiviert: die savefig Der Aufruf muss in derselben Zelle erfolgen wie die Ploterstellungsmethode.
– Joseph
6. Januar 2018 um 1:31
Interessant zu sehen plt.show() erzeugt ein neues Bild. Tatsächlich wurde das Problem dadurch gelöst.
– Benutzer989762
15. August 2018 um 8:21 Uhr
Interessanterweise wird fig nicht angezeigt, wenn Sie plt.plot, plt.savefig, plt.show nacheinander in einem Terminal wie Spyder eingeben. Fügen Sie alle Befehle in ein Skript ein und führen Sie sie auf einmal aus. Es zeigt die Handlung.
– CKM
9. Okt. 2018 um 6:57
@CKM Hallo. Wissen Sie zufällig, warum das passiert? Ich dachte, es sei tatsächlich ein Problem, das Funktionen wie verursacht plt.ylabel() Erstellen Sie eine neue Figur, anstatt sie auf die aktuelle (hier gepostet) anzuwenden, und speichern Sie die Figuren auch leer. Ich habe eine Figur gezeichnet und sie in derselben Zeile (getrennt durch) gespeichert ;) und es hat funktioniert. Ist das nur ein Problem mit Spyder?
– TheSprinter
10. Juli 2020 um 14:20 Uhr
JAG2024
plt.show() sollte danach kommen plt.savefig()
Erläuterung: plt.show() löscht das Ganze, sodass alles, was danach folgt, mit einer neuen leeren Figur geschieht
Ändern Sie die Reihenfolge der Funktionen hat das Problem behoben Für mich:
ErsteSpeichern die Handlung
DannZeigen die Handlung
wie folgt:
plt.savefig('heatmap.png')
plt.show()
Krish
Der Aufruf von savefig vor show() hat bei mir funktioniert.