gpt4 book ai didi

python - Matplotlib pyplot show() 一旦关闭就不起作用

转载 作者:太空狗 更新时间:2023-10-29 22:27:52 26 4
gpt4 key购买 nike

我有一个这样的循环

#!/usr/bin/env python
import matplotlib.pyplot as p

for i in xrange(N):
# Create my_image here

# Display this image
p.figure()
p.imshow(my_image)
p.show()
p.close()

这在 i=0 时工作正常。为了让程序继续,我需要关闭由 pyplot 创建的新图形。对于所有其他循环迭代 (i>0),不会创建另一个新图形,不会显示绘图,程序会继续运行。为什么关闭图形使 pyplot 无法打开新图形(如 MATLAB)?

我期望的行为是:

  1. 执行停止在 p.show()
  2. 当我关闭图形时,执行继续
  3. 当再次遇到p.show()时,显示新的图像。
  4. 重复第2步,直到没有更多的情节显示

最佳答案

可能有更好的方法来制作 imshow 的动画,但这应该在紧要关头起作用。它是 animation example from the docs 的轻微修改版本.

# For detailed comments on animation and the techniqes used here, see
# the wiki entry http://www.scipy.org/Cookbook/Matplotlib/Animations

import matplotlib
matplotlib.use('TkAgg')

import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import matplotlib.cm as cm

import sys
import numpy as np
import time

ax = plt.subplot(111)
canvas = ax.figure.canvas

delta=0.025
x=y= np.arange(-3.0, 3.0, delta)
x,y=np.meshgrid(x, y)
z1=mlab.bivariate_normal(x, y, 1.0, 1.0, 0.0, 0.0)
z2=mlab.bivariate_normal(x, y, 1.5, 0.5, 1, 1)
z=z2-z1 # difference of Gaussians

def run(z):
fig=plt.gcf()
for i in range(10):
plt.imshow(z, interpolation='bilinear', cmap=cm.gray,
origin='lower', extent=[-3,3,-3,3])
canvas.draw()
plt.clf()
z**=2

manager = plt.get_current_fig_manager()
manager.window.after(100, run, z)
plt.show()

关于python - Matplotlib pyplot show() 一旦关闭就不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com