[英]How do I close figure in matplotlib?
`
import matplotlib.pyplot as plt
import pandas as pd
l1 = [1,2,3,4]
l2 = [2,4,6,8]
fig = plt.figure()
def func():
plt.pause(1)
plt.plot(l1,l2)
plt.draw()
plt.pause(1)
input("press any key to continue...")
plt.close(fig)
plt.pause(1)
while True:
func()
plt.pause(1)
`
這是修改后的:
`
import matplotlib.pyplot as plt
import pandas as pd
l1 = [1,2,3,4]
l2 = [2,4,6,8]
fig = plt.figure()
a = 1
def func(num):
input(f"the {num}th window is not opened yet")
plt.pause(1)
plt.plot(l1,l2)
plt.draw()
print(f"the {num}th window is opened")
plt.pause(1)
input("press any key to continue...")
plt.close(fig)
plt.pause(1)
print(f"the {num}th window is closed")
while True:
func(a)
plt.pause(1)
a+=1
`
如果我不使用 while True 循環,它會在我按下任意鍵時停止運行,這就是我的意圖。 但是,如果我使用 while True 循環運行此代碼,即使我按下左上角的任意鍵或 x 按鈕,圖形 window 也不會關閉。 我認為這是由於 while True。 我不知道如何解決這個問題,保持真。 請幫我!
問題不在於while True:
就像你如何創造你的人物一樣。 讓我們從概念上逐步完成您的過程:
fig = plt.figure()
創建一個圖形並將句柄存儲在fig
中。func
,它在圖上繪制並最終調用plt.pause(1)
。func
。 這一次, plt.plot(l1, l2)
創建了一個新圖形,因為沒有打開的圖形。func
調用plt.close(fig)
。 但是fig
中存儲的句柄不是你打開的新圖,所以你的圖當然不會關閉。 要關閉正確的圖形,請打開func
內的圖形。 使用面向 object 的 API 可以讓您更好地控制打開、關閉、plot 等的內容:
import matplotlib.pyplot as plt
import pandas as pd
l1 = [1, 2, 3, 4]
l2 = [2, 4, 6, 8]
def func():
fig, ax = plt.subplots()
ax.plot(l1, l2)
plt.show(block=False)
plt.pause(1)
input("press any key to continue...")
plt.close(fig)
plt.pause(1)
while True:
func()
或者,您可以將plt.close(fig)
替換為plt.close()
,這等效於plt.close(plt.gcf())
,因此您不必知道新圖形的句柄。
每次執行新循環時,都會創建一個新的 window。 您可以關閉此 window,但會立即重新出現一個新的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.