所以我有以下代码:
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
答案 0 :(得分:0)
您的图未关闭的原因是因为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")