Ich verarbeite Beobachtungsdaten von vielen Antennenbasislinien. Momentan arbeite ich an ~ 40 Figuren, von denen jede 4x5 Subplot Region hat. Ich fand es langsam beim Plotten und Speichern von Figuren mit Matplotlib in Loops. Hier sind meine Codes:Wie beschleunigt man Matplotlib beim Plotten und Speichern von vielen Figuren?
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
Und die Ausfürung Zeit info ist:
######### 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
Wie Sie gesehen haben, ich plotten nur 4 Zahlen, die etwa 11 Sekunden kosten. Es dauert ~ 2 Minuten, um alle 39 Figuren zu zeichnen und zu speichern. Ich weiß nicht, wo der Engpass ist. Kannst du helfen, es schneller zu machen? Danke!
unutbu, versuchte ich, Ihre Codes laufen zu lassen. Es ist erstaunlich, dass die Gesamtausführungszeit auf meinem Laptop auf 68.515999794 Sekunden verkürzt ist. Eine große Hilfe für mich, danke. Und die gleichen Achsen wiederzuverwenden (oder "einzufrieren") ist ein guter Hinweis! –