matplotlib.pyplot 2.0.0在运行时显示空图

时间:2017-01-18 13:19:27

标签: python matplotlib

最小例子:

import matplotlib.pyplot as plt
import time
import numpy as np

plt.ion()

def plot(array):
    plt.figure()
    plt.plot(array)
    plt.show()

for i in range(5):
    plot(np.linspace(-10.*i, 10*i, num=101))

time.sleep(15)

这将创建5个绘图,然后等待15秒直到终止。将显示绘图窗口,但在这15秒内您可以看到绘图窗口的帧,但内容是透明的(您可以在下面看到其他窗口的内容;请参阅附图)。 这是在将matplotlib升级到2.0.0版之后发生的。

我希望在程序终止之前可以看到这些图,这是可能的(至少在spyder IDE的ipython控制台中)。我需要调整什么?

Screenshot of transparent plot windows

编辑:

Python 2.7.12

matplotlib 2.0.0

ipython:5.1.0

1 个答案:

答案 0 :(得分:0)

如果您使用的是互动模式,则应使用plt.pause代替time.sleep。以下适用于我,

import matplotlib.pyplot as plt
import numpy as np

plt.ion()

def plot(array):
    plt.figure()
    plt.plot(array)
    plt.show()


for i in range(5):
    plot(np.linspace(-10.*i, 10*i, num=101))

plt.pause(15)

通常使用交互式图表,如果您在开头指定图形和轴axplt.show它们并使用ax.plots更新它{{1}每当您需要更新显示时,都会使用}和plt.draw。例如,

plt.pause