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