私は wxpython を使用した Python インターフェイスを持っています。これにより、ユーザーは行列 (0/1) を入力し、それをグラフ化できます。プログラムは numpy マトリックスを作成し、そのマトリックスから networkx グラフを作成し、matplotlib.pylab を使用してグラフを表示します。
プログラムは推移的、再帰的、および対称クロージャーを取得するなどの他のことも行うため、numpyは必須です... networkxに関しては、行列をグラフ化するためにより良いものをお勧めする場合、別のものを使用できます.matplotlibに関しては嫌いですグラフを表示する他の方法を知っている場合は、アドバイスをお願いします。
ユーザーがグラフボタンをクリックすると、プログラムがマトリックスを読み取り、グラフを作成し、matplotlib がそれを新しいウィンドウに表示します (デフォルト)。ユーザーが最初に matplotlib ウィンドウを閉じずに元のウィンドウに戻って別のマトリックスをグラフ化すると、プログラムがクラッシュします。
また、関係の「矢印」の描き方も、私の意見では魅力的ではありません。
マトリックスをグラフ化するより良い方法が必要です。または、少なくとも myplotlib ウィンドウを強制的に閉じる方法として、plt.close() を試しましたが、うまくいきませんでした。ウィンドウは開いたままになり、両方のウィンドウが表示されます (Not応答しています)、プロセスを終了する必要があります。
これは問題のコードの一部です:
import numpy as np
import networkx as nx
import matplotlib.pylab as plt
... ... ...
def graph(values)
plt.close() #with or without this it does not work
matrix = np.matrix(values)
graph = nx.DiGraph(matrix)
nx.draw(graph)
plt.show()
return