我正在尝试使用matplotlib绘制一个函数,但无法阻止程序的执行。
我尝试过像一些人建议的使用show(block=False)
,但是结果只有一个冻结的窗口。如果我简单地调用show()
,则结果会被正确绘制,但是程序的执行会一直阻塞,直到关闭窗口。从我读过的其他帖子中,我怀疑是否show(block=False)
的工作与否取决于后端。这是正确的吗?我的后端是Qt4Agg。你能看一下我的代码,告诉我是否发现了问题吗?这是我的代码:
from math import *
from matplotlib import pyplot as plt
print(plt.get_backend())
def main():
x = range(-50, 51, 1)
for pow in range(1,5): # plot x^1, x^2, ..., x^4
y = [Xi**pow for Xi in x]
print(y)
plt.plot(x, y)
plt.draw()
#plt.show() #this plots correctly, but blocks execution.
plt.show(block=False) #this creates an empty frozen window.
_ = raw_input("Press [enter] to continue.")
if __name__ == '__main__':
main()
PS. 我忘了说,我希望每次绘图时更新现有的窗口,而不是创建一个新的窗口。
plt.ion()
吗?在plt.show()
之前使用,这样每个图都会被生成到一个子线程中,因此应该不会阻塞程序。 - Anzel