Причина, по которой ваш график не закрывается, заключается в том, что plt.show()
блокирует выполнение, поэтому ваш код даже не достигает строки plt.close("all")
.Чтобы исправить это, вы можете использовать plt.show(block=False)
для продолжения выполнения после вызова show
.
Чтобы заново открыть графики и заставить ваш цикл работать так, как я полагаю, вы ожидаете этого, вам нужно переместить логику создания графика вв цикле while
.Обратите внимание, однако, что plt.style.use('bmh')
не должен быть помещен в этот цикл.
Вот пример:
import matplotlib.pyplot as plt
import numpy as np
# sample data
months = [1,2,3]
monthly_profit = [10, 20, 30]
plt.style.use('bmh')
play = True
while play:
fig = plt.figure(figsize=(10,5))
ax = fig.add_subplot(111)
ax.plot(months, monthly_profit, 'b-',lw=3)
plt.xlabel('Monthhs')
plt.ylabel('Profit')
plt.yticks(np.arange(10000,25000,step=1500))
plt.title('Profit Chart')
x = int(input("State your choise : "))
if x == 3:
plt.show(block=False)
print("Would you like to continue? YES or NO?")
y = input()
if y == "NO":
play = False
plt.close("all")