Mam kłopoty rysując jednocześnie dwie figury, nie pokazane na jednym wykresie. Ale zgodnie z dokumentacją napisałem kod i tylko rysunek pokazuje. Myślę, że może straciłem coś ważnego. Czy ktoś mógłby mi pomóc to rozgryźć? Dzięki. (* Tlist_first * użyty w kodzie to lista danych).
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
źródło
źródło
3.6.6
z Matplotlib2.2.2
(który był najnowszym wydaniem w momencie pisania); powyższe rozwiązanie działa dla mnie. Twój problem musi pochodzić z czegoś innego, np. Używanego zaplecza . Bieganiematplotlib.get_backend()
, dostaję'Qt5Agg'
figure=g
do drugiegoplt.hist()
.NameError: name 'raw_input' is not defined
input()
. Zobacz ostatnią notatkę w pościePowinieneś zadzwonić
plt.show()
dopiero na koniec po utworzeniu wszystkich wątków.źródło
show()
raz, nie mogę do niego zadzwonić ponownie, jeśli chcę ponownie wyświetlić fabułę, muszę go ponownie odtworzyć?Miałem ten sam problem.
Zrobił:
f1 = plt.figure(1) # code for figure 1 # don't write 'plt.show()' here f2 = plt.figure(2) # code for figure 2 plt.show()
Wpisz „plt.show ()” tylko raz, po ostatniej cyfrze. Pracował dla mnie.
źródło
Alternatywnie sugerowałbym włączenie interaktywności na początku i wyłączenie na ostatniej działce. Wszystkie się pojawią, ale nie znikną, ponieważ program pozostanie w pobliżu, dopóki nie zamkniesz liczb.
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()
źródło