【问题标题】:Colormap issue using animation in matplotlib在 matplotlib 中使用动画的颜色图问题
【发布时间】:2013-05-20 19:56:35
【问题描述】:

我使用matplotlib.animation 为名为@9​​87654322@ 的3D 数组中的数据设置动画。我使用 h5py 库从 h5 文件中读取数据,一切正常。但是在使用动画时,颜色图卡在数据范围的第一帧,经过一些步骤后,它在绘图时显示未标准化的颜色。

这是我的代码:

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

f = h5py.File('ez.h5','r')
arr = f["ez"][:,:,:]
f.close()

fig = plt.figure()

i = 0
p = plt.imshow(arr[:,:,0], interpolation='bilinear', cmap=cm.RdYlGn)

def updatefig(*args):
    global i
    i += 1
    if (i==333):
        i = 0
    p.set_array(arr[:,:,i])
    plt.clim()
    return p,

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

【问题讨论】:

    标签: python animation matplotlib color-mapping h5py


    【解决方案1】:

    我想你想用

    替换set_clim()
    p.autoscale()
    

    没有参数,set_clim() 是一个空操作。

    也就是说,在动画中间更改色阶似乎非常具有误导性。

    您还应该使用set_data 而不是set_array(根据文档)。

    【讨论】:

    • @VahidG 如果它解决了您的问题,您能接受吗(答案左侧的灰色大复选框)?它将标志着问题已解决,并为我们双方赢得声誉。
    • 感谢您简洁而有帮助的回答!它解决了我的问题。我认为 autoscale()‌ 只会影响轴限制并且对颜色图没有影响,但我错了。为什么你更喜欢 set_data 而不是 set_array‌(我找不到任何区别)?
    • set_array 将在未来的某个时候贬值。 set_array 实际上只是调用 set_data github.com/matplotlib/matplotlib/blob/master/lib/matplotlib/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多