2015-08-28 74 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)