목차
Matplotlib은 파이썬에서 데이터 시각화를 위해 자주 사용되는 라이브러리입니다. 일반적인 그래프를 확인할 경우에는 상관없지만 그래프 내에 텍스트나 지시선을 그리기 위해 아직도 PPT를 이용하고 있진 않은가요? 이번 글에서는 파이썬 코드에서 그래프를 꾸미는 방법과 꾸미기의 설정에 대해 정리해 보려고 합니다.
1. Annotate 함수는?
annotate 함수는 그래프에 주석을 추가하는 데 사용되며, 특정 데이터 포인트나 위치에 텍스트나 화살표를 함께 표시할 수 있게 해 줍니다. 이 함수를 사용하여 그래프에서 중요한 정보를 강조하거나 설명하는 데 활용할 수 있습니다.
Annotate의 기본 사용형태는 다음과 같습니다.
plt.annotate(s, xy, xytext, arrowprops, **kwargs)
함수 내 각 인자의 의미를 잘 확인하여 유용하게 사용하여야 합니다. 인자에 대한 내용을 확인해 보세요
s: 주석으로 표시할 텍스트 내용입니다. string으로 값을 넣어야 합니다.
xy: 주석을 추가할 데이터 포인트의 위치입니다. 튜플 형태로 (x, y) 좌표값을 지정합니다.
xytext: 주석 텍스트의 위치를 지정하는 튜플 형태의 (x, y) 좌표입니다. 이 위치가 주석 텍스트 표시의 시작위치입니다.
arrowprops: 화살표 스타일과 속성을 설정은 인자로 사전(dictionary) 타입의 값이 들어갑니다.
화살표를 사용하지 않으려면 arrowprops=None으로 설정합니다.
**kwargs: 추가적인 매개변수로, 텍스트 스타일이나 기타 속성을 지정할 수 있습니다.
2. plt.annotate 함수 사용 예제
직선의 그래프를 그려보고 plt.annotate 함수를 사용하여 어떻게 범례가 표기되는지 확인해 보도록 하겠습니다.
import matplotlib.pyplot as plt
# 데이터 생성
x = [1, 2, 3, 4, 5]
y = [3, 6, 2, 8, 5]
# 그래프 그리기
plt.plot(x, y, marker='o')
# 주석 추가
plt.annotate('Important Point', xy=(3, 2), xytext=(4, 4),
arrowprops=dict(facecolor='black', arrowstyle='->'))
# 그래프 표시
plt.show()
이 예제에서는 그래프의 데이터 포인트 (3, 2)에 주석을 추가하고, 텍스트는 (4, 4) 위치에 표시됩니다. 화살표는 텍스트와 데이터 포인트를 연결하며, 스타일은 facecolor와 arrowstyle을 사용하여 지정합니다. 가장 일반적으로 사용하는 예제였습니다.
3. arrowprops의 다양한 설정 방법
annotate 함수를 사용할 때 주석에 화살표를 추가하고 스타일링하기 위해 arrowprops 매개변수를 조작해야 합니다. arrowprops는 사전(dictionary) 형태로 다양한 화살표 속성을 설정할 수 있습니다. 이러한 속성을 사용하여 화살표의 모양, 색상, 두께 등을 지정할 수 있습니다. 파라미터에는 어떠한 것들을 넣을 수 있는지 확인해 보겠습니다.
arrowstyle: 다양한 화살표 스타일을 선택할 수 있습니다. 일부 형태는 다음과 같이 입력할 수 있습니다.
'->': 일반적인 화살표 스타일
'-|>': 화살표 머리가 두 번 꺾인 스타일
'<|-|>': 화살표 머리가 세 번 꺾인 스타일
'fancy': 장식적인 스타일의 화살표
facecolor: 화살표 내부의 색상을 지정합니다.
edgecolor: 화살표 테두리의 색상을 지정합니다.
linewidth: 화살표 테두리의 두께를 지정합니다.
mutation_scale: 화살표 머리의 크기를 조절하는 비율을 지정합니다.
mutation_aspect: 화살표 머리의 가로세로 비율을 조절합니다.
더 많은 인자들이 있지만 자주 사용하는 인자들 위주로 정리해 보았습니다.
4. 스타일을 적용한 annotate 예제 및 결과
arrowprops 인자의 값을 몇 개 사용하여 초기 그래프가 어떻게 변화하는지 예제 코드를 준비해 봤습니다.
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [3, 6, 2, 8, 5]
plt.plot(x, y, marker='o')
plt.annotate('Important Point', xy=(3, 2), xytext=(4, 4),
arrowprops=dict(facecolor='red', arrowstyle='fancy', linewidth=2))
화살표 스타일을 'fancy'로 지정한 것과 facecolor를 빨간색으로 지정해 보았습니다.
5. 마치며
파이썬의 데이터를 가시화하기 위해 matplotlib 라이브러리를 사용하곤 합니다. 이때, 그래프의 가시성을 높이기 위해 범례나 지시선과 같은 항목들을 추가해 주면 좋습니다. 지금까지 이러한 기능 중 하나인 annotate 함수의 사용방법에 대해서 정리해 보았습니다. 많은 기능들에 대해 다 기억할 필요는 없지만 있다는 것만 알아도 필요할 때 잘 사용할 수 있을 겁니다.