を描画するときに、私は次のコードを使用していくつかのグラフを視覚化する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()