Ich habe einige Probleme beim Zeichnen von zwei Figuren gleichzeitig, die nicht in einer einzigen Handlung gezeigt werden. Aber laut Dokumentation habe ich den Code geschrieben und nur die Abbildung zeigt. Ich denke, vielleicht habe ich etwas Wichtiges verloren. Könnte mir jemand helfen, es herauszufinden? Vielen Dank. (Die im Code verwendete * tlist_first * ist eine Liste von Daten.)
plt.figure(1)
plt.hist(tlist_first, bins=2000000, normed = True, histtype ="step", cumulative = True, color = 'g',label = 'first answer')
plt.ylabel('Percentage of answered questions')
plt.xlabel('Minutes elapsed after questions are posted')
plt.axvline(x = 30, ymin = 0, ymax = 1, color = 'r', linestyle = '--', label = '30 min')
plt.axvline(x = 60, ymin = 0, ymax = 1, color = 'c', linestyle = '--', label = '1 hour')
plt.legend()
plt.xlim(0,120)
plt.ylim(0,1)
plt.show()
plt.close() ### not working either with this line or without it
plt.figure(2)
plt.hist(tlist_first, bins=2000000, normed = True, histtype ="step", cumulative = True, color = 'g',label = 'first answer')
plt.ylabel('Percentage of answered questions')
plt.xlabel('Minutes elapsed after questions are posted')
plt.axvline(x = 240, ymin = 0, ymax = 1, color = 'r', linestyle = '--', label = '30 min')
plt.axvline(x = 1440, ymin = 0, ymax = 1, color = 'c', linestyle = '--', label = '1 hour')
plt.legend(loc= 4)
plt.xlim(0,2640)
plt.ylim(0,1)
plt.show()
python
matplotlib
AnneS
quelle
quelle
3.6.6
mit Matplotlib2.2.2
(dies war die neueste Version zum Zeitpunkt Ihres Schreibens); Die obige Lösung funktioniert für mich. Ihr Problem muss von etwas anderem stammen, z . B. vom verwendeten Backend . Laufenmatplotlib.get_backend()
, ich bekomme'Qt5Agg'
figure=g
zum zweiten hinzufügenplt.hist()
.NameError: name 'raw_input' is not defined
input()
. Siehe letzte Anmerkung in der PostSie sollten
plt.show()
erst am Ende aufrufen, nachdem Sie alle Diagramme erstellt haben.quelle
show()
einmal anrief, kann ich es nicht noch einmal anrufen. Wenn ich die Handlung noch einmal zeigen möchte, muss ich sie erneut umspielen?Ich hatte das gleiche Problem.
Hat:
f1 = plt.figure(1) # code for figure 1 # don't write 'plt.show()' here f2 = plt.figure(2) # code for figure 2 plt.show()
Schreiben Sie 'plt.show ()' nur einmal nach der letzten Zahl. Hat für mich gearbeitet.
quelle
Alternativ würde ich vorschlagen, Interaktiv am Anfang einzuschalten und beim letzten Plot auszuschalten. Alle werden angezeigt, aber sie werden nicht verschwinden, da Ihr Programm so lange bestehen bleibt, bis Sie die Zahlen schließen.
import matplotlib.pyplot as plt from matplotlib import interactive plt.figure(1) ... code to make figure (1) interactive(True) plt.show() plt.figure(2) ... code to make figure (2) plt.show() plt.figure(3) ... code to make figure (3) interactive(False) plt.show()
quelle