(python)matplotlib动画不sh

2024-09-26 22:07:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我基于matplotlib站点example编写了以下代码。在

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

fig = plt.figure()
nFreqs = 1024
nFFTWindows = 512
viewport = np.ones((nFreqs, nFFTWindows))
im = plt.imshow(viewport, animated=True)


def updatefig(*args):
    global viewport
    print viewport
    viewport = np.roll(viewport, -1, axis=1)
    viewport[:, -1] = 0
    im.set_array(viewport)
    return im,


ani = animation.FuncAnimation(fig, updatefig, interval=50, blit=True)
plt.show()

在改变动画作品之前,但现在没有了。我希望它从紫色开始,从右边到左边慢慢变黄。viewport变量没有正确更新(在我的函数中用print检查它)。在

我得到了静态图像(所有图像,就像最初一样):

enter image description here

我哪里出错了?在


Tags: 图像importtruematplotlibasnpfigplt
3条回答

imshow图是用一个值初始化的(在本例中是1),因此任何规格化为1到1之间的值都将变成相同的颜色。在

为了改变这种情况,你可以

  1. 启动带有颜色限制的imshow绘图(vmin=0, vmax=1)。在
  2. 用一个规范化实例初始化imshow

    norm = matplotlib.colors.Normalize(vmin=0, vmax=1)
    im = plt.imshow(arr, norm=norm)
    
  3. 之后使用im.set_clim(0,1)设置限制。在

“首选项”>;“IPython控制台”>;“图形”>;“后端”,并将其从“内联”更改为“自动”

在应用上述更改后,不要忘记重新启动IDE(Spyder、PyCharm等)。在

干杯

:)

问题是,最初用单一颜色(1.0)定义绘图,因此颜色范围设置为该值。当你更新图形时,颜色范围是1.0+——一些小值,所以你看不到变化。您需要使用vmin/vmax参数将颜色范围设置为1到0之间,如下所示:

im = plt.imshow(viewport, animated=True, vmin=0., vmax=1.)

代码的其余部分保持不变,这应该可以按预期工作。另一种选择是增加通话

^{pr2}$

im.set_array(viewpoint)之后强制每次更新颜色范围。在

相关问题 更多 >

    热门问题