(python)matplotlib动画没有显示

时间:2017-04-05 13:11:00

标签: python animation matplotlib

我根据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

我在哪里出错?

3 个答案:

答案 0 :(得分:3)

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

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

其余代码保持不变,这应该按预期工作。另一种方法是添加呼叫,

im.autoscale()

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

答案 1 :(得分:0)

使用一个单独的值(在这种情况下为1)初始化 document.getElementById('file_input').addEventListener("change", loadFile, false); function loadFile(e) { var inputFile = e.target.files[0]; console.log(inputFile); img.src = window.URL.createObjectURL(inputFile); stored = window.URL.createObjectURL(inputFile); } //reset file input window.reset2 = function (e) { e.wrap('<form>').closest('form').get(0).reset(); e.unwrap(); } function reload(){ img.src = stored; } 图,因此标准化为1到1之间范围的任何值都将变为相同的颜色。

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

  1. 使用颜色限制(imshow)启动imshow绘图。
  2. 使用规范化实例启动vmin=0, vmax=1绘图

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

答案 2 :(得分:0)

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

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

欢呼

:)