数日間解決しようとしていたpythonエラーに遭遇しました。私のプログラムは図を作成し、保存して閉じますが、このエラーを除いて正常に動作します。通常は保存に支障はありませんが、保存時に画像の下部が欠けてしまうことがあります。奇妙なことに、ループが savefig メソッドに到達するたびにこれが発生するだけです。これが私のコードです。
for num in np.arange(file_number):
plt.figure('abc' + str(num),figsize=(22,12),dpi=100)
#some plots are added to the figure
print 1
plt.savefig(os.path.join(savepath,filename),dpi=100)
print 2
plt.close()
print 3
print コマンドを使用して、エラーが発生した場所を確認します。スパイダーのコンソール出力は次のとおりです。
Reading file1.file
1
2
3
Reading file2.file
1
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_qt4.py", line 151, in <lambda>
lambda: self.close_event())
File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1564, in close_event
self.callbacks.process(s, event)
RuntimeError: underlying C/C++ object has been deleted
2
3
Reading file3.file
1
2
3
Reading file4.file
1
Traceback (most recent call last):
File "/usr/lib/pymodules/python2.7/matplotlib/backends/backend_qt4.py", line 151, in <lambda>
lambda: self.close_event())
File "/usr/lib/pymodules/python2.7/matplotlib/backend_bases.py", line 1564, in close_event
self.callbacks.process(s, event)
RuntimeError: underlying C/C++ object has been deleted
2
3
私の理解では、フィギュアの保存中に(2回ごとに)エラーがすでに発生していますが、close()コマンドを省略しても問題なく動作します。その場合、RAM は約 70 個のファイルでいっぱいになり、時には数百個のファイルを評価する必要があります。そのため、close() コマンドなどを含める必要があります。これを解決する場合(または私のプログラミングを改善する場合、この保存と終了の方法は醜いと見なされる可能性があると思います)、助けてください。