2016-10-18 7 views
0
import matplotlib 
matplotlib.use('TkAgg') 
def generate_graph(self,subject,target,filename): 
    x_data = range(0, len(self.smooth_hydro)) 
    mslen = len([i[1] for i in self.master_seq.items()][0]) 
    diff=(mslen-len(self.smooth_hydro))/2 
    x1_data = range(0,len(self.smooth_groups.items()[0][-1])) 
    x2_data = range(0,mslen) 
    plt.figure() 
    plt.axhline(y=0, color='black') 
    plt.ylim(-3, 3) 
    plt.xlim(right=mslen) 
    plt.plot(x_data, self.smooth_hydro, linewidth=1.0, label="hydrophobicity", color='r') 
    plt.plot(x_data, self.smooth_amphi, linewidth=1.0, label="amphipathicity", color='g') 
    for pos in self.hmmtop: 
     plt.axvline(x=pos-1-diff, ymin=-2, ymax = 0.1, linewidth=1, color='black',alpha=0.2) 

    plt.axvspan(subject[0]-diff,subject[1]-diff, facecolor="orange", alpha=0.2) 
    plt.axvspan(target[0]-diff,target[1]-diff, facecolor="orange", alpha=0.2) 

    plt.legend(loc='upper center', bbox_to_anchor=(0.5, 1.05), 
       ncol=3, fancybox=True, shadow=True) 
    plt.xlabel("Residue Number") 
    plt.ylabel("Value") 
    width = (0.0265)*len(self.master_seq[0]) if mslen > 600 else 15 
    plt.grid('on') 
    plt.savefig(self.out+'/graphs/'+filename+'.png') 
    plt.clf() 
    plt.cla() 
    plt.close() 

私はこの関数を繰り返し呼び出していますが、生成される画像は非常に遅いです。誰かがこのコードを最適化してより速く実行できるように助けてくれますか?MatPlotLibはPythonで非常に遅いです

ありがとうございました!

+0

の可能性のある重複した[なぜmatplotlibのをとても遅いプロットされる?](http://stackoverflow.com/questions/8955869/why-is-plotting-with-matplotlib-so-slow) – Scimonster

答えて

1

この回答が別のpostで見つかりました。すべてのクレジットはLukeです。

Matplotlibは高品質のグラフィックスを作成しますが、速度はよく最適化されていません。 [:;前回のメンテナが推奨されていないpyqtgraph pyqwtはもはや維持 です編集]

  • http://code.google.com/p/guiqwt/

  • 関連する問題