我根据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
进行了检查)。
我得到静态图像(所有这些,就像最初一样):
我在哪里出错?
答案 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之间范围的任何值都将变为相同的颜色。
为了改变这种情况,你可以
imshow
)启动imshow
绘图。使用规范化实例启动vmin=0, vmax=1
绘图
imshow
norm = matplotlib.colors.Normalize(vmin=0, vmax=1)
im = plt.imshow(arr, norm=norm)
设置限制。答案 2 :(得分:0)
首选项> IPython控制台>图形>后端,并将其从“内联”更改为“自动”
请不要忘记在应用上述更改后重新启动IDE(Spyder,PyCharm等)。
欢呼
:)