Matplot에서 텍스트(plot text)를 추가하는 방법은 다양하며, 플롯에 설명, 레이블, 주석 등을 추가할 때 유용합니다. 아래에 Matplotlib에서 텍스트를 다루는 주요 방법과 예시 하나씩 적어보겠습니다.

1. 기본 텍스트 추가: plt.text()

plt.text()는 플롯의 특정 위치에 텍스트를 추가하는 함수입니다.

plt.text(x, y, text, fontsize=12, color='black', ha='center', va='center')
  • xy: 텍스트가 위치할 좌표.
  • text: 추가할 텍스트.
  • fontsize: 텍스트 크기.
  • color: 텍스트 색상.
  • ha: 수평 정렬 ('center''left''right').
  • va: 수직 정렬 ('center''top''bottom').

2. 주석 추가: plt.annotate()

plt.annotate()는 텍스트와 화살표를 함께 추가하여 특정 데이터 포인트를 설명할 때 사용합니다.

plt.annotate(text, xy, xytext, arrowprops=dict(arrowstyle='->'))
  • text: 주석 텍스트.
  • xy: 화살표가 가리킬 좌표.
  • xytext: 텍스트가 위치할 좌표.
  • arrowprops: 화살표 스타일 설정.

3. 제목 및 레이블 추가

  • 제목plt.title()
  • x축 레이블plt.xlabel()
  • y축 레이블plt.ylabel()

4. 텍스트 속성 설정

텍스트의 스타일을 다양하게 설정할 수 있습니다. 주요 속성은 다음과 같습니다:

  • fontsize: 텍스트 크기.
  • color: 텍스트 색상.
  • fontweight: 글자 두께 ('bold''normal').
  • fontstyle: 글자 스타일 ('italic''normal').
  • bbox: 텍스트 주변에 박스 추가.

5. 수학 표현식 추가 (LaTeX)

Matplotlib은 LaTeX 문법을 지원하여 수학 표현식을 추가할 수 있습니다.
$...$ 안에 LaTeX 문법을 작성하면 됩니다.

plt.text(2, 5, r'$\alpha = \beta^2 + \gamma$', fontsize=14, color='green')

6. 텍스트 회전

rotation 매개변수를 사용하여 텍스트를 회전시킬 수 있습니다.

plt.text(2, 5, 'Rotated Text', fontsize=12, color='purple', rotation=45)

7. 텍스트 위치 조정

  • ha (horizontal alignment): 수평 정렬 ('left''center''right').
  • va (vertical alignment): 수직 정렬 ('top''center''bottom').

8. 여러 줄 텍스트 추가

\n을 사용하여 여러 줄의 텍스트를 추가할 수 있습니다.

9. 텍스트 배경 추가

bbox 매개변수를 사용하여 텍스트 주변에 배경을 추가할 수 있습니다.

plt.text(2, 5, 'Text with Background', fontsize=12, color='white',
         bbox=dict(facecolor='black', alpha=0.7))

10. 텍스트 위치를 데이터 좌표 대신 Figure 좌표로 지정

transform 매개변수를 사용하여 텍스트 위치를 Figure 좌표 (0~1 범위)로 지정할 수 있습니다.

plt.text(0.5, 0.5, 'Figure Text', fontsize=12, color='navy',
         transform=plt.gcf().transFigure)
  • plt.text(): 특정 좌표에 텍스트 추가.
  • plt.annotate(): 텍스트와 화살표를 함께 추가.
  • plt.title()plt.xlabel()plt.ylabel(): 제목 및 축 레이블 추가.
  • LaTeX 문법: 수학 표현식 추가.
  • bboxrotationhava: 텍스트 스타일 및 위치 조정.

Plot text Code

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y, marker='o')

for i, txt in enumerate(['A', 'B', 'C', 'D', 'E']):
    plt.text(x[i], y[i], txt, fontsize=12, rotation=-5)

plt.title('Multiple Text Example')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')

plt.show()

By Mark

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다