Как я могу закрыть сюжет в Python, а затем снова открыть его? - PullRequest
0 голосов
/ 16 октября 2018

Итак, у меня есть этот код:

plt.style.use('bmh')
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')
play = True
while play:
  x = int(input("State your choise : "))
  if x == 3:
    plt.show()
  print("Would you like to continue? YES or NO?")
  y = input()
  if y == "NO":
    play = False
  plt.close("all")

И кажется, что это совсем не закрывает сюжет.Ни с close ('all'), ни с close ().Я хотел бы иметь возможность открывать и держать его открытым до тех пор, пока пользователь не сообщит свой ответ, а затем закройте его.Любая помощь?: D

1 Ответ

0 голосов
/ 17 октября 2018

Причина, по которой ваш график не закрывается, заключается в том, что 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...