5
我正在處理來自多個天線基線的觀測數據。目前我的工作是繪製大約40個數字,每個數字都有4x5的子區域。使用matplotlib進行循環繪圖和保存時,我發現它很慢。這裏是我的代碼:如何在繪圖和保存大量數字時加速matplotlib?
import numpy as np
import matplotlib.pyplot as plt
import time
...
PLT_PAGE_NUM = 39 # default is 39
SUB_PLT_NUM = 20 # default is 20
for pp in xrange(0,PLT_PAGE_NUM):
plt.figure(figsize=(20,12))
start_time = time.clock()
for kk in xrange(0,SUB_PLT_NUM):
plt.subplot(5,4,kk+1)
plt.plot(np.arange(0,TIME_LENGTH), xcor_real_arr[20*pp+kk,0:],'r-',
range(0,TIME_LENGTH), xcor_imag_arr[20*pp+kk,0:],'b-')
plt.title('XCOR of '+ ind_arr[20*pp+kk], color='k')
plt.savefig('test_imag_real'+str(pp)+'.png',format='png',dpi=100)
print 'Fig-'+str(pp)+' has been saved'
print "Excution time:", time.clock()-start_time
而且excution時間信息是:
######### Check your inputs setting #########
You have selected 2 files.
The time interval is From 2011-10-20_14:28:38 to 2011-10-20_15:10:54
Your time resolution is set to 1.125s
The total plot points number is: 100
Your frequency channel is: ch2
######### Hardworking...please wait #########
Fig-0 has been saved
Excution time: *2.52576639619*
Fig-1 has been saved
Excution time: *2.59867230708*
Fig-2 has been saved
Excution time: *2.81915188482*
Fig-3 has been saved
Excution time: *2.83102198991*
Program ends
正如你所看到的,我只積4個數字耗資約11秒。花費大約2分鐘來繪製並保存所有39個數字。我不知道瓶頸在哪裏。你能幫助它變得更快嗎? 謝謝!
unutbu,我試着運行你的代碼。令人驚訝的是,筆記本電腦上的總計時間縮短爲68.515999794秒。對我很有幫助,謝謝。重複使用(或「凍結」)同一個軸是一個很好的提示! – 2012-07-28 09:15:55