Python의 Matplotlib에서 스크립트가 실행되는 동안 그래프(figure)를 실시간으로 조작하려면 다음 단계를 따르면 됩니다.
단계별 방법
- 그래프 크기를 설정하고 서브플롯 주변 및 사이의 여백(padding)을 조정합니다.
- figure() 메서드를 사용하여 새 그래프를 생성하거나 기존 그래프를 활성화합니다.
- gca() 메서드로 현재 축(ax)을 가져온 뒤, show()로 현재 그래프를 화면에 표시합니다.
- 최종 플롯을 그리기 전에 plt.pause() 메서드를 사용하여 스크립트 실행을 잠시 멈추고 그래프를 업데이트할 수 있도록 합니다.
- plot() 메서드로 선 그래프를 그립니다.
- 마지막으로 show() 메서드를 호출하여 최종 그래프를 표시합니다.
예제 코드
import numpy as np
from matplotlib import pyplot as plt
# 그래프 크기 및 자동 레이아웃 설정
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
fig = plt.figure()
ax = fig.gca()
fig.show()
# 반복문 안에서 그래프를 실시간으로 업데이트
for i in range(20):
ax.plot(np.random.randn(10, 1), ls='-')
fig.canvas.draw()
plt.pause(0.1)
# 실시간 업데이트 종료 후 최종 그래프 출력
plt.close(fig)
plt.plot([1, -2, 3, 5, 3, 1, 0])
plt.show()코드 설명
위 예제에서 핵심은 plt.pause()입니다. 이 메서드는 지정한 시간(초) 동안 이벤트 루프를 실행하여 GUI 백엔드가 화면을 갱신할 수 있게 해줍니다. 반복문 내에서 fig.canvas.draw()로 캔버스를 다시 그리고 plt.pause(0.1)로 0.1초씩 대기하면, 난수 데이터가 순차적으로 추가되는 애니메이션 효과를 볼 수 있습니다.
반복문이 끝나면 plt.close(fig)로 실시간 그래프 창을 닫고, 새로운 데이터로 최종 그래프를 그려 plt.show()로 표시합니다.
실행 결과
스크립트를 실행하면 20번의 반복 동안 무작위 데이터가 실시간으로 그려지는 과정을 확인할 수 있으며, 이후 최종 선 그래프가 별도의 창에 나타납니다.