2016-09-20 11 views
0

を描画するときに、私は次のコードを使用していくつかのグラフを視覚化するNetworkxを使用しています:matplotlibのとnetworkxマージグラフ

import networkx as nx 
import matplotlib.pyplot as plt 

def drawgraph(g, filename): 
    #plt.figure() I had to comment this line because it gives me an 'alloc: invalid block` error 
    nx.draw(g) 
    plt.draw() # I added this hoping it might solve the problem (outlined in the text below the code) 
    plt.savefig(filename) 
    #plt.show() this solves the problem, however it's blocking call and I'm drawing hundreds of graphs 

は、今の問題はdrawgraphへの後続の呼び出しは、描かれたグラフはと合併させることになるということです以前のもの:例えば、2回呼び出すと最初のものは正しく描かれますが、2番目の画像には2番目のグラフに加えて最初のグラフが含まれています。関数の最後にplt.show()を置くと問題は解決しますが、これはブロッキングコールであり、私はそれを持つことはできません。だから私はこの問題をどのように解決するのですか? 、あなたが何かをプロットし、その後matplotlib.pyplotで、再び何かをプロットするたびに

import networkx as nx 
import matplotlib.pyplot as plt 

def drawgraph(g, filename): 
    plt.figure() 
    nx.draw(g) 
    plt.draw() 
    plt.savefig(filename) 
    plt.close() 

答えて

0

だから、いくつかの周りを探した後、私はplt.figure()行をコメント解除し、最後にplt.close()呼び出しを追加、答えを見つけました両方のことが表示されます。あなたは図を閉じたり消したりする必要があります。

plt.clf()を追加すると、問題が解決されます。私はplt.draw()があなたのために何もしないと信じています。

関連する問題