답변:
이것은 matplotlib 질문이며, 사용자에게 표시되지 않는 백엔드 (예 : 'Agg')를 사용하여이 문제를 해결할 수 있습니다.
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
plt.plot([1,2,3])
plt.savefig('/tmp/test.png')
편집 : 플롯을 표시하는 기능을 잃지 않으려면 대화 형 모드 를 끄고 플롯을 표시 plt.show()
할 준비가되었을 때만 호출 하십시오.
import matplotlib.pyplot as plt
# Turn interactive plotting off
plt.ioff()
# Create a new figure, plot into it, then close it so it never gets displayed
fig = plt.figure()
plt.plot([1,2,3])
plt.savefig('/tmp/test0.png')
plt.close(fig)
# Create a new figure, plot into it, then don't close it so it does get displayed
plt.figure()
plt.plot([1,3,2])
plt.savefig('/tmp/test1.png')
# Display all "open" (non-closed) figures
plt.show()
close()
및 show()
명령 에 대해 이야기하기 위해 질문을 업데이트했습니다 . 백엔드를 즉시 변경하는 것은 지원되지 않습니다.
plt.plot()
대화 형 모드가 켜져 있으면 호출하자마자 명령 줄 ipython 그림이 플로팅되므로 화면에서 그림이 깜박이는 것을 방지하는 데 중요합니다 . 대화 형 모드를 끄면까지 플롯 표시가 지연됩니다 plt.show()
. ipython 노트북을 사용하고 있기 때문에 대화 형 모드는 다르게 취급됩니다.
matplotlib.use('Agg')
혼자서 트릭을했습니다. 나는 아무것도 필요하지 않았다plt.show()
거나 plt.ioff()
전혀 내 코드를.
plt.ioff()
또는 plt.show()
(사용하는 경우) 필요하지 않습니다 %matplotlib inline
. 위의 코드는 plt.ioff()
. plt.close()
필수적인 역할을합니다. 이거 한번 해봐:
%matplotlib inline
import pylab as plt
# It doesn't matter you add line below. You can even replace it by 'plt.ion()', but you will see no changes.
## plt.ioff()
# Create a new figure, plot into it, then close it so it never gets displayed
fig = plt.figure()
plt.plot([1,2,3])
plt.savefig('test0.png')
plt.close(fig)
# Create a new figure, plot into it, then don't close it so it does get displayed
fig2 = plt.figure()
plt.plot([1,3,2])
plt.savefig('test1.png')
iPython에서이 코드를 실행하면 두 번째 플롯이 표시 plt.close(fig2)
되고 끝에 추가 하면 아무것도 표시되지 않습니다.
결론적으로 그림을로 닫으면 plt.close(fig)
표시되지 않습니다.
plt.ioff
I 얻을 RuntimeWarning: More than 20 figures have been opened...
. plt.close
해결했습니다.
ioff