Matplotlib에서 이전에 그린 텍스트 지우기
Matplotlib으로 그린 그림 위에 배치한 텍스트를 나중에 제거하고 싶은 경우가 있습니다. Matplotlib의 text.remove() 메서드를 사용하면 이미 그려진 텍스트 객체를 간단하게 삭제할 수 있습니다. 아래 단계를 따라 실습해 보겠습니다.
- 그림(figure) 크기를 설정하고, 서브플롯 사이 및 주변의 여백(padding)을 조정합니다.
- numpy를 사용하여 x, y 데이터 포인트를 생성합니다.
- plot() 메서드를 사용해 x와 y 데이터를 그래프에 그립니다.
- fig.text() 메서드로 그림 위에 텍스트를 배치합니다. 이때 반환되는 값은 텍스트 아티스트(artist) 객체입니다.
- 텍스트를 지우려면 반환된 아티스트 객체에 대해 text.remove()를 호출하면 됩니다.
- 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, ax = plt.subplots() x = np.linspace(-10, 10, 100) y = np.sin(x) ax.plot(x, y) text = fig.text(0.5, 0.96, "$y=sin(x)$") #text.remove() plt.show()
실행 결과
위 코드를 그대로 실행하면 그래프 상단에 수식 텍스트 $y=sin(x)$가 함께 표시됩니다.

이제 코드에서 #text.remove() 줄의 주석(#)을 제거하고 다시 실행해 보세요. remove()가 호출되어 텍스트 객체가 그림에서 삭제되므로, 아래와 같이 텍스트 없이 그래프만 표시됩니다.

정리
핵심은 fig.text() 또는 ax.text()가 반환하는 텍스트 아티스트 객체를 변수에 저장해 두고, 해당 객체의 remove() 메서드를 호출하는 것입니다. 이 방법은 텍스트뿐 아니라 선, 점 등 다른 아티스트 객체에도 동일하게 적용할 수 있어, 동적으로 그래프 요소를 추가하거나 제거하는 인터랙티브 시각화를 만들 때 유용하게 활용됩니다.