Python matplotlib动画中的断言错误

Python matplotlib动画中的断言错误,python,animation,matplotlib,Python,Animation,Matplotlib,我的问题如下: 我从文件中提取数据,并希望同时制作四个绘图的动画:两个色条和两条线 import numpy as np import matplotlib.pyplot as plt import matplotlib.animation as anim import sys begin = float(sys.argv[1]) end = float(sys.argv[2]) dataCl = np.loadtxt("file1.txt") dataSS = np.loadtxt("f

我的问题如下: 我从文件中提取数据,并希望同时制作四个绘图的动画:两个色条和两条线

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

begin = float(sys.argv[1])
end = float(sys.argv[2])


dataCl = np.loadtxt("file1.txt")
dataSS = np.loadtxt("file2.txt")
datajSR = np.loadtxt("file3.txt")

ibegin = 0
iend = 0
for i in range(len(dataCl[:,0])):
    if np.abs(dataCl[i,0] - begin) < 1e-9:
        ibegin = i
        iend = i
        while abs(dataCl[i,0] - end) >= 1e-9:
            iend = iend + 1
            i = i + 1
        break


fig = plt.figure()
f, axarr = plt.subplots(2, 2)
temp = np.zeros((10,10))
Qs = axarr[0,0].imshow(temp,cmap = plt.cm.OrRd)
El = axarr[0,1].imshow(temp,cmap = plt.cm.OrRd)
SS, = axarr[1,0].plot([],[])
jSR, = axarr[1,1].plot([],[])

def init():
    Qs.set_array(temp)
    El.set_array(temp)
    SS.set_data([],[])
    jSR.set_data([],[])
    return Qs,El,SS,jSR,

def animate(i):
    a = 0
    b = 0
    dataQ = np.zeros((10,10))
    dataE = np.zeros((10,10))
    for j in range(100):
        if b >= 10:
            a = a + 1
            b = 0
        dataQ[a][b] = dataCl[i,2*j + 1]
        dataE[a][b] = dataCl[i,2*(j+1)]
        b = b + 1
    Qs.set_array(dataQ)
    El.set_array(dataE)
    SS.set_data(dataSS[ibegin:ibegin+i,0],dataSS[ibegin:ibegin+i,1])
    jSR.set_data(datajSR[ibegin:ibegin+i,0],datajSR[ibegin:ibegin+i,1])
    return Qs,El,SS,jSR,

ani = anim.FuncAnimation(fig, animate, init_func = init, frames = iend-ibegin,interval=25, blit=True)

plt.show()

我无法在我的代码中找到错误;(

错误消息可能是后端和特定于平台的。由于错误消息似乎指向blitting机制,您可能希望尝试在
FuncAnimation
中设置
blit=False
。此外,您还可以尝试其他后端以查看问题是否仍然存在。(了解您的平台和matplotlib的版本也可能有所帮助。)

更新:如果设置
blit=False
,尝试另一个后端,并且更新
matplotlib
没有帮助,那么一些建议:

  • 尝试手动查看代码是否与初始数据一起工作(
    init();animate(0);fig.savefig(“/tmp/test.png”)
    )-如果它抛出错误,则需要修复静态打印问题

  • 现在,您可以初始化绘图两次(首先在代码中,然后在
    init
    中),您可以拿走一次(例如,不定义
    init\u func

  • 使用
    [],[]
    初始化绘图会使刻度未初始化。初始化绘图时,您可能应该使用
    set_-ylim
    set_-xlim
    vmin
    vmax
    关键字以及
    imshow
    图像。(这可能与您遇到的异常有关!)


  • Matplotlib 1.1.1rc Linux Mint 13Maya@Hi4ko我建议您安装最新版本(今天是1.3.1,下个月是1.4.0),然后重试。
    matplotlib
    正在进行非常积极的开发,许多旧的bug已经解决。安装最新版本没有帮助;(它仍然会创建两个图形,第一个是绝对空的,第二个只有轴;(@Hi4ko:更新总是一个好主意,所以你没有丢失任何东西:)但是,更多建议请参见编辑。
    Exception in Tkinter callback
    Traceback (most recent call last):
      File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
        return self.func(*args)
      File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 236, in resize
        self.show()
      File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_tkagg.py", line 239, in draw
        FigureCanvasAgg.draw(self)
      File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py", line 421, in draw
        self.figure.draw(self.renderer)
      File "/usr/lib/pymodules/python2.7/matplotlib/artist.py", line 55, in draw_wrapper
        draw(artist, renderer, *args, **kwargs)
      File "/usr/lib/pymodules/python2.7/matplotlib/figure.py", line 904, in draw
        self.canvas.draw_event(renderer)
      File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1544, in draw_event
        self.callbacks.process(s, event)
      File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 262, in process
        proxy(*args, **kwargs)
      File "/usr/lib/pymodules/python2.7/matplotlib/cbook.py", line 192, in __call__
        return mtd(*args, **kwargs)
      File "/usr/lib/pymodules/python2.7/matplotlib/animation.py", line 273, in _end_redraw
        self._post_draw(None, self._blit)
      File "/usr/lib/pymodules/python2.7/matplotlib/animation.py", line 220, in _post_draw
        self._blit_draw(self._drawn_artists, self._blit_cache)
      File "/usr/lib/pymodules/python2.7/matplotlib/animation.py", line 235, in _blit_draw
        a.axes.draw_artist(a)
      File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 2008, in draw_artist
        assert self._cachedRenderer is not None
    AssertionError