ループ内でグラフ作成呼び出しを繰り返しています。バックエンドは引き続き実行する必要があるため、グラフ作成を別のスレッドに分割しました (バックエンドは C++ へのサブプロセス呼び出しを使用しているため、インタラクティブ モードを使用するとグラフがロックされます)。ただし、これにより、バックエンドが再びグラフ化するときに問題が発生するようです。実行を続けている間、グラフ作成は最初の 2 回目以降失敗します。コードが実行されている限り、追加されたウィンドウを開き続けることができるようにする必要があるため、ユーザーは離れて後で戻ってきても、すべてのグラフを表示できます。必要な数のウィンドウを表示し、基になるコードが終了してもそこに保持するにはどうすればよいですか (ウィンドウは、2 番目のコードが実行を停止するすべての CMD ウィンドウを閉じるのが好きです)。
import subprocess
import threading
from matplotlib import pyplot as mpl
...
for x in data:
...
if condition:
...
class Graph(threading.Thread):
def __init__(self,X,Y,min_tilt, min_energy):
self.X = X
self.Y = Y
self.min_tilt = min_tilt
self.min_energy = min_energy
threading.Thread.__init__(self)
def run(self):
X = self.X
Y = self.Y
dx = (X.max()-X.min())/30.0
x = np.arange(X.min(),X.max()+dx,dx)
y = quad(x,fit)
fig = mpl.figure()
ax = fig.add_subplot(1,1,1)
ax.grid(True)
ax.plot(x, y, 'g')
ax.scatter(X, Y, c='b')
ax.scatter(self.min_tilt, self.min_energy, c='r')
mpl.show()
thread = Graph(X,Y,min_tilt,min_energy)
thread.start()
....
subprocess.Popen(file)