2015-08-28 68 views
0

我想要在matplotlib动画中同时绘制多个数据集。这可能吗?每个数据集都是一个(x,y)坐标数组,所以我想要动画来循环(x,y)坐标,并不断更新,直到数组结束。对于单个数据集来说很简单,但是我不止一个要做。任何帮助将非常感激。matplotlib animation多个数据集

这是我的问题;

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

def update_line(num, data, line): 
    line.set_data(data[...,:num]) 
    return line, 

fig1 = plt.figure() 

data1 = np.random.rand(2, 25) 
data2 = np.random.rand(2, 25) 
l, = plt.plot([], [], 'r-') 
plt.xlim(0, 1) 
plt.ylim(0, 1) 
plt.xlabel('x') 
plt.title('test') 
line_ani = animation.FuncAnimation(fig1, update_line, 25, fargs=(data, l),interval=50, blit=False) 

plt.show() 

这工作得很好密谋只是第一个数据集,但我不知道如何绘制两个数据1和数据2在一起(而在未来,我想会对相同的动画10集)。我只是不明白update_line函数在做什么,如果有人能给我一个答案,这将清除我脑海中的很多事情。

回答

0

动画功能每帧仅调用一次,因此您必须确保在一次调用中更新了两个图。

例如:

def update_lines(num, data1, data2, line1, line2): 
    line1.set_data(data1[...,:num]) 
    line2.set_data(data2[...,:num]) 
    return line1,line2 

data1 = np.random.rand(2, 25) 
data2 = np.random.rand(2, 25) 

fig1 = plt.figure() 
ax1 = fig1.add_subplot(121) 
ax2 = fig1.add_subplot(122) 
l1, = ax1.plot([], [], 'r-') 
l2, = ax2.plot([], [], 'g-') 
for ax in (ax1, ax2): 
    ax.set_xlim(0, 1) 
    ax.set_ylim(0, 1) 
    ax.set_xlabel('x') 
    ax.set_title('test') 
line_ani = animation.FuncAnimation(fig1, update_lines, 25, fargs=(data1, data2, l1, l2),interval=50, blit=False) 
相关问题