使用Matplotlib进行非阻塞绘图。

12 浏览
0 Comments

使用Matplotlib进行非阻塞绘图。

我在尝试使用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):   # 绘制 x^1, x^2, ..., x^4
        y = [Xi**pow for Xi in x]
        print(y)
        plt.plot(x, y)
        plt.draw()
        #plt.show()             # 这个可以正确绘制,但会阻塞执行。
        plt.show(block=False)   # 这个会创建一个空的冻结窗口。
        _ = raw_input("按下[回车]继续。")
if __name__ == '__main__':
    main()

PS. 我忘了说,我想每次绘制时更新现有窗口,而不是创建一个新窗口。

0