最小示例:
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
发布于 2017-01-18 22:28:49
如果您使用交互模式,则应使用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)一般来说,对于交互式绘图,我发现如果您在开始时指定图形和轴ax,plt.show它们,并使用ax.plots使用plt.draw和plt.pause更新它,当您需要更新显示时,它的工作更可靠。例如,
import matplotlib.pyplot as plt
import numpy as np
fig, axs = plt.subplots(5,1)
plt.ion()
plt.show()
def plot(ax, array):
ax.plot(array)
plt.draw()
for i in range(5):
plot(axs[i], np.linspace(-10.*i, 10*i, num=101))
plt.pause(15)https://stackoverflow.com/questions/41720533
复制相似问题