pyplot:创建热图真的很慢

car*_*arl 5 python matplotlib

我有一个循环执行身体大约200次.在每次循环迭代中,它进行复杂的计算,然后作为调试,我希望生成NxM矩阵的热图.但是,生成这个热图是无法忍受的缓慢,并且显着减慢了已经很慢的算法.

我的代码是这样的:

import numpy
import matplotlib.pyplot as plt
for i in range(200):
    matrix = complex_calculation()
    plt.set_cmap("gray")
    plt.imshow(matrix)
    plt.savefig("frame{0}.png".format(i))
Run Code Online (Sandbox Code Playgroud)

来自numpy的矩阵不是很大 - 300 x 600的双打.即使我不保存数字而是更新屏幕上的情节,它甚至更慢.

当然,我一定是在滥用pyplot.(Matlab可以做到这一点,没问题.)我如何加快速度?

unu*_*tbu 5

尝试放入plt.clf()循环以清除当前图形:

for i in range(200):
    matrix = complex_calculation()
    plt.set_cmap("gray")
    plt.imshow(matrix)
    plt.savefig("frame{0}.png".format(i))
    plt.clf()
Run Code Online (Sandbox Code Playgroud)

如果你不这样做,那么当机器努力为这个数字分配越来越多的内存时,循环会变慢.